Structure of Detailed data export

This document provides reference information for the schema ofCloud Billing detailed usage cost data that's exported to each table inBigQuery.

Thedetailed usage cost data provides all of the information included in thestandard usage cost data,along with additional fields that provide granular, resource-level cost data,like a virtual machine or SSD that generates usage. The detailed exportincludes granular cost information about the following services:

  • AlloyDB for PostgreSQL
  • App Engine
  • BigQuery
  • Bigtable
  • Cloud Data Fusion
  • Cloud Deploy
  • Cloud Run functions
  • Cloud Logging
  • Cloud Run
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataflow
  • Dataproc Metastore
  • Firestore and Datastore
  • Google Kubernetes Engine (GKE)
    To view a breakdown of GKE cluster costs in a detailed data export, you mustalsoenable cost allocation for GKE.
  • Managed Microsoft AD
  • Memorystore for Redis
  • Secret Manager
  • Spanner

Identify granular cost data by service

To analyze granular cost information in a detailed export, use the following tableto identify the column that contains information about specific resources.

Service descriptionColumnHow to identify resources
AlloyDB for PostgreSQLservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is June 23, 2024.
App Engineservice.description andresource.name, orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: App Engine Flex costs are notincluded in the granular App Engine instance costs in Cloud Billingexport to BigQuery. The first full day of data for this serviceis March 15, 2023.
BigQueryservice.description andresource.name, orresource.global_name

Theservice.description column contains the name of theservice. Theresource.name column contains the name provided by theuser. Theresource.global_name column contains a unique identifierfor the resource.

Note: The first full day of data for thisservice is August 8, 2023.

Analysis metrics have job identifiers and Storage metrics have dataset identifiers. The exported data doesn't include resource identifiers for theStreamingInsertBytes metric. To estimate your table-level costs, see Forecast storage billing

.
Bigtableservice.description andresource.global_name

Theservice.description column contains the name of the service. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is March 12, 2024.
Cloud Data Fusionservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note:Hybrid_data_fusion costs aren't included in the granular Data Fusion instance costs in Cloud Billing export to BigQuery. The first full day of data for this service is May 2, 2024.
Cloud Deployservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is May 1, 2024.
Cloud Run functionsservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is December 1, 2022. As of July 25th, 2023, SKUs for Cloud Run functions (2nd Gen) are included in the granular Cloud Run functions costs in Cloud Billing export to BigQuery.
Cloud Loggingservice.description andresource.global_name

Theservice.description column contains the name of the service. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is May 31, 2024.
Cloud Runservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is December 1, 2022.
Cloud SQLservice.description andresource.global_name

Theservice.description column contains the name of the service, and theresource.global_name column contains a unique identifier for the resource.

Note: Some network data transfer, Cloud SQL backups in specific locations, and Storage Snapshot costs aren't included in the granular Cloud SQL instance costs in Cloud Billing export to BigQuery. These exceptions make up a small percentage of your Cloud SQL costs. The first full day of data for this service is December 1, 2022.
Cloud Storageservice.description andresource.global_name

Theservice.description column contains the name of the service. Theresource.global_name column contains a unique identifier for the resource.

Note: Cloud CDN metrics aren't included in the exported data. These exceptions are a small fraction of your Cloud Storage costs. The first full day of data for this service is February 13, 2024.
Compute Engineservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is August 11, 2021.
Dataflowservice.description andresource.name, orresource.global_name

Theservice.description column contains the name of theservice.Theresource.name column contains the name provided by the user.Theresource.global_name column contains a unique identifier forthe resource.

Note: The first full day of data for thisservice is October 2, 2023.Snapshot_disk_time metrics won'tprovideresource.name because users can't name snapshots.
Dataproc Metastoreservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is May 6, 2024.
Firestore and Datastoreservice.description andresource.name, orresource.global_name

Theservice.description column will be App Engine. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for thisservice is June 30, 2023.
Google Kubernetes Engine (GKE)labels.key

Use the following label keys to filter the resources:

  • goog-fleet-project: Filter your cluster resources by fleet host project, if the cluster is registered to a fleet.
  • goog-k8s-cluster-location: Filter your GKE resources by location.
  • goog-k8s-cluster-name: Filter your GKE resources by cluster.
  • goog-k8s-node-pool-name: Filter your cluster resources by node pool.
  • k8s-namespace: Filter your GKE resources by namespace.
  • k8s-namespace-labels: Filter your GKE resources by fleet namespace label.
  • k8s-label: View all your GKE resources.

To view granular GKE cluster costs in your detailed cost data export, you mustalso enable cost allocation for GKE.

Seeexample queries for filtering GKE data in BigQueryexports.

Note: The first day you could enable GKE cost allocation was June 30, 2022. After you enable GKE cost allocation, your detailed billing export starts including additional line items for your GKE resources from that date. The billing export doesn't backfill GKE cost allocation data.
Managed Microsoft ADservice.description andresource.name orresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is December 8, 2023.
Memorystore for Redisservice.description andresource.global_name

Theservice.description column contains the name of the service. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is January 16, 2024.
Pub/Subservice.description andresource.name orresource.global_name

Theservice.description column contains the name of theservice. Theresource.name column contains the name provided bythe user. Theresource.global_name column contains a uniqueidentifier for the resource.

Note: The first full day of data for this service is December 17, 2025.
Secret Managerservice.description,resource.name, andresource.global_name

Theservice.description column contains the name of the service. Theresource.name column contains the name provided by the user. Theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is July 19, 2024.
Spannerservice.description andresource.global_name

Theservice.description column contains the name of the service, and theresource.global_name column contains a unique identifier for the resource.

Note: The first full day of data for this service is March 15, 2023.

Seeexamples of querying granular data for your resources.

Detailed usage cost data schema

In your BigQuery dataset, your detailed Google Cloudusage cost data is loaded into a data table namedgcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

When you use thedetailed usage cost data in BigQuery, notethe following:

  • The table schema for the detailed Cloud Billing data export canchange over time, such as when new fields are added to the detailed export.To protect your queries from future schema changes, rather than relying onqueries thatdirectly reference the exported columns, we recommend thatyou useBigQuery views to normalize the data so that the table presents the same schema to yourqueries. Learn more about thislimitation.
  • When selecting orcreating a BigQuery dataset for yourdetailed usage cost data, you can select anydataset location that is supported for use with Cloud Billingdata.
  • When you enable thedetailed usage cost data export for thefirst timein Cloud Billing, if you select a dataset configured to use amulti-region location (EU or US), Cloud Billing data will be available retroactively from thestart of the previous month. Data is exported in chronological order. Forthe initial backfill of exported data, it might take up to five days foryour retroactive Cloud Billing data to finish exporting before you startseeing your most recent usage data.
  • If you enable thedetailed usage cost data export and select a datasetthat's configured to use a supportedregion location,your Cloud Billing data will be available starting from the date whenyou enabled the export.
  • If you enabled, disabled, and subsequently re-enabled thedetailed usage cost data export, the Cloud Billing data might not beavailable for the period when data export was explicitly disabled.
  • Learn more about thefrequency of the data loads into yourBigQuery tables.
  • See otherlimitations that might impact exporting your billing data to BigQuery,such as datasets with customer-managed encryption keys (CMEK) enabled.
  • Consider the additional data volume that your BigQuerytables might need and the additional cost when enablingdetailed usagecost data instead of thestandard usage cost data export. Theincreased granularity of resource-level information can increase thenumber of rows, which are aggregated in thestandard usage cost format.We recommend that you reviewControl costs in BigQuery for further best practices in managing your BigQuery costs.
FieldTypeDescription
billing_account_idString

The Cloud Billing account ID that the usage is associated with.

For resellers: For usage costs generated by a Cloud Billing subaccount, this is the ID of the subaccount, not the ID of the parent reseller Cloud Billing account.

invoice.monthString

The year and month (YYYYMM) of the invoice that includes the cost line items. For example: "201901" is equivalent to January, 2019.

You can use this field to get the total charges on the invoice. See Cloud Billing Export to BigQuery Query Examples.

Note: The first full month of data with this field is June 2018.Caution: The invoice month may differ from the usage month. For example, some product usage at the very end of a month may be charged to the next month's invoice. Also, the invoice month for Cloud Billing adjustments and associated taxes reflects the month the adjustment wasissued; the adjustment could beapplied to a different month than the issue month. Refer toerrors and adjustments for more information.
invoice.publisher_typeString

Indicates the publisher associated with the transaction. This field supports the splitting of invoices between transactions made directly with Google (first party), and transactions made with a partner (third party), which also signals what regulations might apply to the transaction.

The possible values are:
  • GOOGLE: First-party, unregulated transaction by Google Cloud.
  • PARTNER: A third-party, regulated or unregulated transaction by a partner.
cost_typeString

The type of cost this line item represents: regular, tax, adjustment, or rounding error.

Notes:
service.idStringThe ID of the service that the usage is associated with.
service.descriptionStringThe Google Cloud service that reported the Cloud Billing data.
sku.idStringThe ID of the resource used by the service. For the full list of SKUs, seeGoogle Cloud SKUs.Note: You can use thesku.id column to map each of your line items to the list prices published on theGoogle Cloud pricing pages, in thePricing Table report, and through theCloud Billing Catalog API.
sku.descriptionStringA description of the resource type used by the service. For example, a resource type for Cloud Storage isStandard Storage US.
usage_start_timeTimestampThe start time of the hourly usage window within which the given cost was calculated. The usage and costs for all services is displayed with hourly granularity, which means long running service usage is spread across multiple hourly windows.

For more information, see the BigQuery documentation on timestamp data types. See also, Differences between exported data and invoices.

usage_end_timeTimestampThe end time of the hourly usage window within which the given cost was calculated. The usage and costs for all services is displayed with hourly granularity, which means long running service usage is spread across multiple hourly windows.

For more information, see the BigQuery documentation on timestamp data types. See also, Differences between exported data and invoices.

projectStructproject contains fields that describe the Cloud Billing project, such as ID, number, name, ancestry_numbers, and labels.Caution: For newly created projects, project information might not be present on usage that occurs within 24 hours of project creation.
project.idStringThe ID of the Google Cloud project that generated the Cloud Billing data.
project.numberStringAn internally generated, anonymized, unique identifier for the Google Cloud project that generated the Cloud Billing data. In your support cases and other customer communication, Google will refer to your projects by this project number.Note: The first full day of data for this field is October 29, 2020.

The addition of this field changes the table schema and might break any queries thatdirectly reference the exported columns. Learn more about this limitation.

project.nameStringThe name of the Google Cloud project that generated the Cloud Billing data.
project.ancestry_numbersStringThe ancestors in the resource hierarchy for the project identified by the specifiedproject.id (for example, my-project-123).

For example:/ParentOrgNumber/ParentFolderNumber/. Learn more about the Resource Hierarchy.

Note: During Cloud Billing data export, project ancestry is recorded based on the time of usage. Organization and folder numbers are immutable, but a project's ancestry isn't. Over time, you might move projects and folders around in your resource hierarchy. The first full month of data with this field is January 2019.
project.ancestorsStruct

This field describes the structure and value of the resource hierarchy of a cost line item, including projects, folders, and organizations. Ancestors are ordered from node to root (project, folder, then organization).

Note: The first full month of data for this field is April 2022.
project.ancestors.resource_nameStringThe relative resource name for each ancestor in the format 'resourceType/resourceNumber'. Usingproject.ancestors.resource_name will offer a more complete view ofproject.ancestry_numbers.
project.ancestors.display_nameStringThe name that you created for your resource in your console.
project.labels.keyStringIf labels are present, thekey portion of the key-value pair that comprises the label on the Google Cloud project where the usage occurred. For more information about using labels, seeUsing Labels.
project.labels.valueStringIf labels are present, thevalue portion of the key-value pair that comprises the label on the Google Cloud project where the usage occurred. For more information about using labels, seeUsing Labels.
labels.keyStringIf labels are present, thekey portion of the key-value pair that comprises the label on the Google Cloud resource where the usage occurred. For more information about using labels, seeUsing Labels.
labels.valueStringIf labels are present, thevalue portion of the key-value pair that comprises the label on the Google Cloud resource where the usage occurred. For more information about using labels, seeUsing Labels.
system_labels.keyStringIf system labels are present, thekey portion of the key-value pair that comprises the system-generated label on the resource where the usage occurred. See also, Available system labels.Note: The first full day of data with this field is September 18, 2018.
system_labels.valueStringIf system labels are present, thevalue portion of the key-value pair that comprises the system-generated label on the resource where the usage occurred. See also, Available system labels.Note: The first full day of data with this field is September 18, 2018.
location.locationStringLocation of usage at the level of a multi-region, country, region, or zone; orglobal for resources don't have a specific location. For more information, see Geography and regions and Google Cloud locations.Note: The first full day of data with this field is September 18, 2018.
location.countryStringWhenlocation.location is a country, region, or zone, this field is the country of usage, e.g.US. For more information, see Geography and regions and Google Cloud locations.Note: The first full day of data with this field is September 18, 2018.
location.regionStringWhenlocation.location is a region or zone, this field is the region of usage, e.g.us-central1. For more information, see Geography and regions and Google Cloud locations.Note: The first full day of data with this field is September 18, 2018.
location.zoneStringWhenlocation.location is a zone, this field is the zone of usage, e.g.us-central1-a. For more information, see Geography and regions and Google Cloud locations.Note: The first full day of data with this field is September 18, 2018.
costFloat

Cost per the applicableconsumption model inclusive of any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

currencyStringThe currency that the cost is billed in. For more information, see Local Currency for Billing and Payments.
currency_conversion_rateFloatThe exchange rate from US dollars to the local currency. That is,cost ÷currency_conversion_rate is the cost in US dollars.
Note: When Google charges in local currency, we convert prices into applicable local currency pursuant to the conversion rates published by leading financial institutions.
usage.amountFloatThe quantity ofusage.unit used.
usage.unitStringThe base unit in which resource usage is measured. For example, the base unit for standard storage isbyte-seconds.
usage.amount_in_pricing_unitsFloatThe quantity ofusage.pricing_unit used.Note: The first full day of data with this field is January 22, 2018.
usage.pricing_unitStringThe unit in which resource usage is measured, according to the Cloud Billing Catalog API.Note: The first full day of data with this field is January 22, 2018.
creditsStructcredits contains fields that describe the structure and value of the credits associated with Google Cloud and Google Maps Platform SKUs.
credits.idStringIf present, indicates that a credit is associated with the product SKU.credits.id values are either an alphanumeric unique identifier (for example,12-b34-c56-d78), or a description of the credit type (such asCommitted Usage Discount: CPU).

If thecredits.id field is empty, then the product SKU isn't associated with a credit.

Note: The first full day of data with this field is September 10, 2020.
credits.full_nameStringThe name of the credit associated with the product SKU. This is a human-readable description of an alphanumericcredits.id. Examples includeFree trial credit orSpend-based committed use discount.

credits.full_name values are only present for SKUs with an alphanumericcredits.id. If the value of thecredits.id is a description of the credit type (such asCommitted Usage Discount: CPU), then thecredits.full_name field is empty.Note: The first full day of data with this field is September 10, 2020.

credits.typeStringThis field describes the purpose or origin of thecredits.id. Credit types include:
  • FEE_UTILIZATION_OFFSET For thenew Spend-based CUD discounts, this credit is used to offset the fees paid to purchase CUDs. With the new model, you purchase commitments at a discounted price. As you use the SKUs covered by the CUD, this credit offsets the fee. When you fully utilize your commitment, the offset reduces the fee to zero, with your eligible SKU usage charged at the discounted price.
  • COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE: For legacy spend-based committed use discounts (CUDs) that aren't part of thenew pricing model, this is the credit earned in exchange for your commitment to spend a minimum amount for a service in a particular region.
  • COMMITTED_USAGE_DISCOUNT: Resource-based committed use contracts purchased for Compute Engine in return for deeply discounted prices for VM usage.
  • DISCOUNT: The discount credit type is used for credits earned after a contractual spending threshold is reached. Note that in the Cloud Billing reports available in the Google Cloud console, the discount credit type is listed asSpending-based discounts.
  • FREE_TIER: Some services offer free resource usage up to specified limits. For these services, credits are applied to implement the free tier usage.
  • PROMOTION: The promotion credit type includesspend-based milestone credits, Google Cloud Free Trial and marketing campaign credits, or other grants to use Google Cloud. When available, promotional credits are considered a form of payment and are automatically applied to reduce your total bill.
  • RESELLER_MARGIN: If you're a reseller, thereseller margin credit type indicates theReseller Program Discounts earned on every eligible line item.
  • SUBSCRIPTION_BENEFIT: Credits earned by purchasing long-term subscriptions to services in exchange for discounts.
  • SUSTAINED_USAGE_DISCOUNT: The sustained use discounts credit type is an automatic discount that you receive for running eligible Compute Engine resources for a significant portion of the billing month, with no commitment required.
Note: The first full day of data with this field is September 10, 2020.
credits.nameStringA description of the credit applied to the Cloud Billing account.
credits.amountFloatThe amount of the credit applied to the usage.
adjustment_infoStructadjustment_info contains fields that describe the structure and value of an adjustment to cost line items associated with a Cloud Billing account.

adjustment_info values are only present if the cost line item was generated for a Cloud Billing modification. A modification can happen for correction or non-correction reasons. Theadjustment_info type contains details about the adjustment, whether it was issued for correcting an error or other reasons.

Note: The first full day of data for this field is October 29, 2020.

The addition of this field changes the table schema and might break any queries thatdirectly reference the exported columns. Learn more about this limitation.

adjustment_info.idStringIf present, indicates that an adjustment is associated with a cost line item.adjustment_info.id is the unique ID for all the adjustments associated with an issue.
adjustment_info.descriptionStringA description of the adjustment and its cause.
adjustment_info.typeString

The type of adjustment.

Types include:

  • USAGE_CORRECTION: A correction due to incorrect reported usage.
  • PRICE_CORRECTION: A correction due to incorrect pricing rules.
  • METADATA_CORRECTION: A correction to fix metadata without changing the cost.
  • GOODWILL: A credit issued to the customer for goodwill.
  • SALES_BASED_GOODWILL: A credit issued to the customer for goodwill, as part of a contract.
  • SLA_VIOLATION: A credit issued to the customer due to a service-level objective (SLO) violation.
  • BALANCE_TRANSFER: An adjustment to transfer funds from one payment account to another.
  • ACCOUNT_CLOSURE: An adjustment to bring a closed account to a zero balance.
  • GENERAL_ADJUSTMENT: A general billing account modification.
adjustment_info.modeString

How the adjustment was issued.

Modes include:

  • PARTIAL_CORRECTION: The correction partially negates the original usage and cost.
  • COMPLETE_NEGATION_WITH_REMONETIZATION: The correction fully negates the original usage and cost, and issues corrected line items with updated usage and cost.
  • COMPLETE_NEGATION: The correction fully negates the original usage and cost, and no further usage is remonetized.
  • MANUAL_ADJUSTMENT: The adjustment is allocated to cost and usage manually.
export_timeTimestampA processing time associated with an append of Cloud Billing data. This will always increase with each new export.
Note: Use theexport_time column to understand when the exported billing data was last updated. See also, Differences between exported data and invoices below.
tagsStruct

Fields that describe the tag, such as key, value, and namespace.

Note: The first full month of data with these tags is October 2022.
tags.keyString

The short name or display name of the key associated with this particular tag.

tags.valueString

The resources attached to atags.key. At any given time, exactly one value can be attached to a resource for a given key.

tags.inheritedBoolean

Indicates whether a tag binding is inherited (Tags Inherited = True) or direct/non-inherited (Tags Inherited = False). You can create a tag binding to a parent resource in the resource hierarchy.

tags.namespaceString

Represents the resource hierarchy that define tag key and values. Namespace can be combined with tag key and tag value short names to create a globally unique, fully qualified name for the tag key or tag value.

cost_at_listFloat

Cost at list price per the defaultconsumption model.

Note: The first full day of data with this field is June 29, 2023.
transaction_typeString

The transaction type of the seller. The transaction type might be one of the following:

  • GOOGLE = 1: Services sold by Google Cloud.
  • THIRD_PARTY_RESELLER = 2: Third party services resold by Google Cloud.
  • THIRD_PARTY_AGENCY = 3: Third party services sold by a partner, with Google Cloud acting as the agent.
This field is populated for line items withcost_type =regular and it can be missing for othercost_types.Note: The first full day of data with this field is August 22, 2023.
seller_nameString

The legal name of the seller.

This field is populated for Marketplace-related cost line items, which is set for countries where Google or an affiliate can act as the vendor's agent. For more information, seeAgency Jurisdictions.

Note: The first full day of data with this field is August 22, 2023.
priceStruct

Fields that describe the structure and values related to the prices charged for usage.

Note: For thedetailed data export, the first full day of data in this field is April 13, 2023. For thestandard data export, the first full day of data in this field is July 15, 2025.
price.list_priceNumeric

SKU list price per the defaultconsumption model.

Note: The first full day of data in this field is July 15, 2025.
price.effective_price_defaultNumeric

SKU price per the defaultconsumption model inclusive of any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

Note: The first full day of data in this field is July 15, 2025.
price.list_price_consumption_modelNumeric

SKU list price per the applicableconsumption model before any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

Note: The first full day of data in this field is July 15, 2025.
price.effective_priceNumeric

SKU price per the applicableconsumption model inclusive of any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

Note: For thedetailed data export, the first full day of data for this field is April 13, 2023. For thestandard data export, the first full day of data in this field is July 15, 2025.
price.tier_start_amountNumeric

The lower bound number of units for a SKU's pricing tier. For more information, seeAbout pricing tiers.

price.unitString

The unit of usage in which the pricing is specified and resource usage is measured.

Note: For thedetailed data export, the first full day of data in this field is April 13, 2023. For thestandard data export, the first full day of data in this field is July 15, 2025.
price.pricing_unit_quantityNumeric

The lower bound number of units for a SKU's pricing tier. For more information, seeAbout pricing tiers.

Note: For thedetailed data export, the first full day of data in this field is April 13, 2023. For thestandard data export, the first full day of data in this field is July 15, 2025.
cost_at_effective_price_defaultNumeric

Cost per the defaultconsumption model inclusive of any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

Note: The first full day of data in this field is July 15, 2025.
cost_at_list_consumption_modelNumeric

Cost per the applicableconsumption model before any negotiated discounts reflected in the custom pricing in the contract linked to your Cloud Billing account (if applicable).

Note: The first full day of data in this field is July 15, 2025.
consumption_modelStruct

Fields that describe the applicableconsumption model.

Note: The first full day of data in this field is July 15, 2025.
consumption_model.idString

The ID of theconsumption model.

Note: The first full day of data in this field is July 15, 2025.
consumption_model.descriptionString

The description of theconsumption model.

Note: The first full day of data in this field is July 15, 2025.
Additional fields available to detailed usage cost data export
resourceStruct

The fields that describe the structure and value of information relevant to service resources (like a virtual machine or a SSD) that generate usage.

resource.global_nameString

A globally unique service identifier for the resource that generated relevant usage.

resource.nameString

A service-specific identifier for the resource that generated relevant usage. This can be input generated by the user.

Note: The first full day of data with this field is August 11, 2021.
subscriptionStruct

Fields that describe your spend-based or resource-based commitments. You can use these fields to analyze your fees for specific commitments.

Note: The first full day of data with this field is January 25, 2024.
subscription.instance_idString

The subscription ID linked to a commitment.

Note: The first full day of data with this field is January 25, 2024.

Understand standard and detailed usage cost data

The following sections describe thestandard anddetailed usage cost dataexported to BigQuery.

About labels

The cost data for a specific label only shows usage from the date that the labelwas applied to a resource. For example, if you add the labelenvironment:devto a Compute Engine VM on January 15, 2024, any analysis forenvironment:dev includes only the usage for that VM since January 15.

You might also see label data at different times for different services,depending on when each service provides it.

Available system labels

System labels are key-value pairs for important metadata about the resource thatgenerated the usage. The following system labels are automatically included onapplicable usage.

Note: The first full day of data with these system labels is September 18, 2018.
system_labels.keyExamplesystem_labels.valueDescription
compute.googleapis.com/machine_specn1-standard-1, custom-2-2048Configuration of the virtual machine. See Machine Types for more information.
compute.googleapis.com/coresfor n1-standard-4 this is4; for custom-2-2048 this is2The number of vCPUs available to the virtual machine.
compute.googleapis.com/memoryfor n1-standard-4 this is15360 (i.e. 15 GB * 1024 MB/GB); for custom-2-2048 this is2048The amount of memory (in MB) available to the virtual machine.
compute.googleapis.com/is_unused_reservationtrue; falseIndicates usage that was reserved throughZonal Reservations but not used.
compute.googleapis.com/reservation_namemy-a2-reservationThe short name of the Compute Engine reservation.
compute.googleapis.com/reservation_project_idmy-gcp-projectThe Project ID owning the Compute Engine reservation.
storage.googleapis.com/object_statelive;noncurrent;soft_deleted;multipartThe state of the storage object being charged.

Differences between exported data and invoices

Google Cloud products report usage and cost data to Cloud Billingprocesses at varying intervals. As a result, you might see a delay between youruse of Google Cloud services, and the usage and costs being available toview in Cloud Billing. Typically, your costs are available within aday, but can sometimes take more than 24 hours.

At the end of a calendar month, late-reported usage might not be included onthat month's invoice and instead might roll over to the next month's invoice.

When you query your costs using timestamp fields, your returned data mightpick up late-reported usage that wasn't originally included on the invoicethat was generated for the same usage month. As a result, the Cloud Billingdata returned might not map directly to that invoice.

Timestamp fields include:

  • usage_start_time
  • usage_end_time
  • export_time

To return Cloud Billing data that maps directly to an invoice, query oninvoice.month instead of timestamp fields.

Taxes

As of September 1, 2020, your usage cost data shows your taxliability for each of your projects, instead of as a single line item. If youhave queries or visualizations that depend on tax data, you might need toupdate the queries to account for these changes.

For example, for costs recorded before September 1, your usage cost data lookssimilar to the following example, which shows a total tax liability of $10.

billing_account_idproject.idcost_typecost
123456-ABCDEF-123456example-projectRegular$60
123456-ABCDEF-123456test-projectRegular$40
123456-ABCDEF-123456[empty]Tax$10

For costs recorded after September 1, the $10 is broken down to $6 forexample-project, and $4 fortest-project:

billing_account_idproject.idcost_typecost
123456-ABCDEF-123456example-projectRegular$60
123456-ABCDEF-123456test-projectRegular$40
123456-ABCDEF-123456example-projectTax$6
123456-ABCDEF-123456test-projectTax$4
Note: If the tax isn't related to a project, theproject columns are empty.For example, Support costs are owned by the Cloud Billing account, andnot by a specific project. For taxes on these costs, theproject columns areempty.

Errors and adjustments

In the rare event that your Cloud Billing data contains an error or requiresan adjustment, it's appended with corrective data. These adjustments fall underone of two categories: billing modifications or corrections.

Billing modifications

Billing modifications appear as separate line items. If you received a billingmodification, a new line item in your Cloud Billing export toBigQuery shows the change. The adjustments shown correspond tothe invoice, credit memo, and debit memo documents available in theDocuments area of theBilling section in the Google Cloud console.

For more information on billing modifications and how they're applied, seeUnderstand memos and adjustments.

Corrections

Corrections appear as new data that negates incorrect data on the source SKUs.In some cases, new data replaces the incorrect charge. Allcolumns in the billing data export will match the original data, except for thefollowing columns:

  • cost
  • credit
  • usage.amount
  • export_time

For example, imagine that you're charged $10 for your usage ofSKU A onJanuary 1. On your January invoice (issued in early February), you'll see acharge of $10 forSKU A. However, on February 2, Google Cloud issued acorrection againstSKU A, reducing the usage cost to $5. You'll receivetwo additional line items on your February invoice (issued in early March):

  • -$10 for usage on January 1 (negating the original charge)
  • $5 for usage on January 1 (stating the intended charge)

These new items have anadjustment_info column in the billing data export. Theoriginal January invoice, showing the overcharge, won't be adjusted.You can verify your charges in your billing data export by viewing yourcosts byusage_start_time and grouping byDay.In these views, any corrections or charges for late-monetized usage areaccumulated, and you don't need to worry about any temporarily incorrect data.

If you want more detailed information on your corrections, view allcharges in aninvoice month, and look for charges where theusage dateoccurredbefore the invoice month. These charges are the results ofcorrections or late-monetized usage.

The following code sample shows how to create a basic query that returns thetotal cost of corrections or late-monetized usage:

SELECTSUM(cost)+SUM(IFNULL((SELECTSUM(c.amount)FROMUNNEST(credits)c),0))AStotalFROM`project.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`WHEREinvoice.month='202311'ANDDATE(TIMESTAMP_TRUNC(usage_start_time,Day,'US/Pacific')) <'2023-11-01';

For a query example that returns a cost breakdown byservice, for invoicecharges, where theusage date occurredbefore theinvoice month, seeQuery cost details to view corrections or late-monetized usage by servicefor a specified invoice month in "Example queries for Cloud Billing data export."

About promotional credits in custom pricing contracts

If you have a custom pricing contract, you might receive promotionalcredits to use on Google Cloud as part of the contract. For example,you might receive $1,000 to use on Compute Engine resources.Promotional credits are typically considered a form of payment. When available,promotional credits are automatically applied to reduce your total bill.

The terms of your contract specify whether the promotional credits apply to yourcosts calculated at thelist price of a SKU, or thenet price (afterdiscounts).

If your promotional credits apply to costs that are calculated at thelistprice, in theCost table report, there's a service calledInvoice,with a SKU calledContract billing adjustment. This SKU adjusts yourcredits so that they apply to the costs at list price. To see the usage thatthe adjustment is for, query thesystem.labels columns. The key insystem.labels.key iscloud-invoice.googleapis.com/sku_id, and the value insystem.labels.value contains the SKU ID that the credit and the adjustmentapplied to.

About tags

Tagsare resources in the form of key-value pairs that can be attached to resourcesdirectly or through inheritance. You can use tags to perform chargebacks,audits, and other cost allocation analysis. You can also use tags andconditional enforcement of policies for fine-grained control across yourresource hierarchy.

Tags have a robust permissions model and can support inheritance, centralizedmanagement, nomenclature standardization, and policy engine integration, whilelabels are a separate tool that allow you to annotate resources.

Tags data appears in BigQuery exports for Resources, Projects,Folders, and Organizations.

Available tags

TheStandard costs andDetailed costs exports for Resources, Projects,Folders, and Organizations include these fields for tags data: Tags Key, TagsValue, Tags Inherited, and Tags Namespace.

Resource-level tags in the Cloud Billing data export are availablefor the following resources:

  • AlloyDB for PostgreSQL clusters, instances, and backups
  • Artifact Registry repositories
  • Bigtable instances
  • Cloud Run services and jobs
  • Cloud Storage buckets
  • Compute Engine instances
  • Memorystore for Redis instances
  • Secret Manager global and regional secrets
  • Spanner instances
  • Firestore databases

Tags limitations

  • Tags might take up to an hour to propagate to BigQueryexports. If a tag has been added or removed within an hour, or if a resourcehas existed for less than an hour, it might not appear in the export.

Detailed usage cost query examples

This section provides examples of how to query the Cloud Billing detailed usage cost data exported to BigQuery.

Because thedetailed usage cost schema includes all of the fields from thestandard usage cost schema, the query examples provided for thestandard data exported to BigQuery also work with thedetailed data that'sexported. Thestandard query examples aren't written to retrieveany of the resource-level information that's provided with thedetailedusage cost export option. When creating queries for thedetailed data, youcan use astandard query example as a template, update theTable name,and add any of the fields that are available in thedetailed usage cost schema.

Common values used in the example detailed cost queries

The query examples in this section use the following value forTable name:project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX

Return the resource-level costs on an invoice

The following queries demonstrate two ways of viewing resource-level cost andcredit values on an invoice using exported billing data.

  • Thetotal field directly sums the floating point cost and credit values, which can result in floating point rounding errors.
  • Thetotal_exact field converts costs and credit values to micros before summing, then converts back to dollars after summing, avoiding the floating point rounding error.

Sum costs for each resource, per invoice

This query shows the invoice total for eachresource.name per month, as a sumof regular costs, taxes, adjustments, and rounding errors. Any costs notassociated with a resource-level item are aggregated under thenamenullfor the month.

Standard SQL

SELECTinvoice.month,resource.name,SUM(cost)+SUM(IFNULL((SELECTSUM(c.amount)FROMUNNEST(credits)c),0))AStotal,(SUM(CAST(cost*1000000ASint64))+SUM(IFNULL((SELECTSUM(CAST(c.amount*1000000asint64))FROMUNNEST(credits)c),0)))/1000000AStotal_exactFROM`project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`GROUPBY1,2ORDERBY1ASC,2ASC;

For example, the result of the preceding query might be:

Rowmonthnametotaltotal_exact
1201901null$1005.004832999999984$1005.00
2201901backend1$781.8499760000028$781.85
3201902null$953.0034923645475983$953.03
4201902backend1$992.3101739999999717$992.31
5201902bitnami-launchpad-wordpress-1-wordpress$1.2817819999999998$1.28

Return details by cost type for each resource, per invoice month

This query shows the totals for eachcost_type for eachresource.name permonth. Cost types include regular costs, taxes, adjustments, and roundingerrors. Any costs not associated with a resource-level item are aggregatedunder thenamenull for the month.

Standard SQL

SELECTinvoice.month,cost_type,resource.name,SUM(cost)+SUM(IFNULL((SELECTSUM(c.amount)FROMUNNEST(credits)c),0))AStotal,(SUM(CAST(cost*1000000ASint64))+SUM(IFNULL((SELECTSUM(CAST(c.amount*1000000asint64))FROMUNNEST(credits)c),0)))/1000000AStotal_exactFROM`project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`GROUPBY1,2,3ORDERBY1ASC,2ASC,3ASC;

For example, the result of the preceding query might be:

Rowmonthcost_typenametotaltotal_exact
1201901regularnull$1000.501209987994782$1000.50
2201901rounding_errornull–$0.500489920049387–$0.50
3201901taxnull$10.000329958477891$10.00
4201901adjustmentnull–$5.002572999387045–$5.00
5201901regularbackend1$410.998795012082947$411.00
2201901rounding_errorbackend1–$0.2404900489920378–$0.24
3201901taxbackend1$4.105840329977189$4.11

Get a breakdown of Google Kubernetes Engine (GKE) cluster costs

This section provides examples of filtering GKE cluster costs inyour BigQuery export reports.To learn more about GKE cluster costs, visitView breakdown of cluster costs.

Filter GKE costs

The following example queries show you how to filter and group yourGKE costs for supported resource types by cluster name,namespace, and label.

GKE cluster costs before credits

SELECTSUM(cost)AScost_before_credits,labels.valueAScluster_nameFROM`project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`LEFTJOINUNNEST(labels)aslabelsONlabels.key="goog-k8s-cluster-name"GROUPBYlabels.value;

GKE costs after credits by namespace

SELECTlabels.valueasnamespace,SUM(cost)+SUM(IFNULL((SELECTSUM(c.amount)FROMUNNEST(credits)c),0))AScost_after_credits,FROM`project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`LEFTJOINUNNEST(labels)aslabelsONlabels.key="k8s-namespace"GROUPBYnamespace;

GKE costs by SKU

SELECTproject.idASproject_id,labels.valueAScluster_name,sku.idASsku_id,sku.descriptionASsku_description,SUM(cost)AScostFROM`project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`JOINUNNEST(labels)ASlabelsONlabels.key="goog-k8s-cluster-name"GROUPBYcluster_name,project_id,sku_description,sku_id;

Query examples with tags

The following examples illustrate ways to query your data with tags.

Calculate costs by invoice month with tags

The following query demonstrates how you can use return costs by invoice monthfor thecost_center tag.

SELECTinvoice.monthASinvoice_month,tag.valueAScost_center,ROUND((SUM(CAST(costASNUMERIC))+SUM(IFNULL((SELECTSUM(CAST(c.amountASNUMERIC))FROMUNNEST(credits)ASc),0))),2)ASnet_costFROM`project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`,UNNEST(tags)AStagWHEREtag.key="cost_center"ANDtag.namespace="821092389413"GROUPBYinvoice.month,tag.valueORDERBYinvoice.month,tag.value;

For example, the result of the preceding query might be:

Rowinvoice_monthcost_centernet_cost
1202208android_mobile_apps9.93
2202208ios_mobile_apps9.93
3202209android_mobile_apps25.42
4202209ios_mobile_apps25.4
5202209personalization16.08

View costs of untagged resources

This query shows the invoice total for untagged resources, grouped by invoicemonth.

SELECTinvoice.monthASinvoice_month,ROUND((SUM(CAST(costASNUMERIC))+SUM(IFNULL((SELECTSUM(CAST(c.amountASNUMERIC))FROMUNNEST(credits)ASc),0))),2)ASnet_costFROM`project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`WHERE"color"NOTIN(SELECTkeyFROMUNNEST(tags))GROUPBYinvoice_monthORDERBYinvoice_month;

For example, the result of the preceding query might be:

Rowinvoice_monthnet_cost
12022020
220220316.81
320220454.09
420220555.82
520220654.09
620220755.83
720220831.49

Query using system labels

System labels for Google Cloud reservations provide enhanced visibility intoyour reservation usage. They allow you to track which instances areconsuming which reservations, and analyze the costs associated with both used andunused capacity directly within BigQuery.

These examples use two system labels:

  • compute.googleapis.com/reservation_name
  • compute.googleapis.com/reservation_project_id

These labels are present on Cloud Billing records from both instancesconsuming a reservation and the unused portion of a reservation.

The following examples demonstrate how to query the BigQuerybilling export to analyze reservation consumption using system labels.

Important: These reservation labels are present in Cloud Billing exportdata for usage on or after September 17, 2025. Historical data prior to thisdate won't include valid labels.

Before you begin

To query using system labels, you must have Cloud Billing export toBigQuery enabled, specifically theDetailed usage cost dataexport. This export contains the resource-level information, including systemlabels, necessary to see the new reservation labels.

To set up or verify your BigQuery export, see the followingdocumentation:

  1. Overview of billing data export to BigQuery
  2. Set up billing data export to BigQuery
  3. Understand the Detailed data export schema

Ensure your BigQuery dataset is configured to receive thedetailed export. The table name will typically be in the formatgcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

Note: In the following examples, replaceproject-ID.dataset.gcp_billing_export_resource_v1_Xwith your actual BigQuery table name.

View consumption for a given instance

This query lets you check if a given instance utilized a reservationduring a particular period and, if so, which reservation it was.

SELECTt.usage_start_time,sl_reservation.valueASreservation_name,t.sku.descriptionASsku_description,SUM(t.usage.amount)AStotal_usage_amountFROMproject-ID.dataset.gcp_billing_export_resource_v1_XAStLEFTJOINUNNEST(t.system_labels)ASsl_reservationONsl_reservation.key='compute.googleapis.com/reservation_name'WHEREt.service.id='6F81-5844-456A'ANDDATE(TIMESTAMP_TRUNC(t._PARTITIONTIME,DAY))='2025-09-16'ANDt.sku.descriptionLIKE'%Core%'ANDt.resource.nameLIKE'%tc-billing-case1-instance-1757983787%'GROUPBYt.usage_start_time,reservation_name,t.sku.descriptionORDERBYt.usage_start_time,reservation_name,t.sku.description;

Sample Result:

usage_start_timereservation_namesku_descriptiontotal_usage_amount
2025-09-16 00:00:00.000000 UTCE2 Instance Core running in Americas597
2025-09-16 01:00:00.000000 UTCE2 Instance Core running in Americas3009
2025-09-16 01:00:00.000000 UTCtc-billing-case1-res0-1757983787E2 Instance Core running in Americas591
2025-09-16 02:00:00.000000 UTCE2 Instance Core running in Americas10
2025-09-16 02:00:00.000000 UTCtc-billing-case1-res0-1757983787E2 Instance Core running in Americas3054
2025-09-16 02:00:00.000000 UTCtc-billing-case1-res1-1757983787E2 Instance Core running in Americas37

Note:

  • SKU Filtering: Limiting the SKU to CPU cores offers clearerresource distribution. This can be adjusted to other reserved resources,such as RAM, LocalSSD, TPU, or GPU.
  • On-Demand Consumption: When both reservation_name andreservation_project_id are null, the instance is consuming on-demand resources.

When multiple rows with differing reservation_name and reservation_project_idcorrespond to a specific instance within a given timeframe, it indicates thatthe instance's consumed reservation changed during that period. The usageportion will detail the consumption.

Analyze usage distribution for a given reservation

This query helps you understand the distribution of usage for a given sharedreservation, showing how much capacity was used or unused among differentGoogle Cloud projects that can consume the given reservation.

SELECTt.project.idASconsumer_project_id,t.sku.descriptionASsku_description,CASEWHENt.resource.global_nameNOTLIKE'%instances/%'THEN'Unused Capacity'WHENt.resource.nameISNOTNULLANDt.resource.name!=''THEN'Instance Usage'ELSE'Other Reservation Cost'ENDASusage_category,SUM(t.usage.amount)AStotal_usage_amount,t.usage.unitASusage_unit,SUM(t.cost)AStotal_cost_usdFROMproject-ID.dataset.gcp_billing_export_resource_v1_XAStLEFTJOINUNNEST(t.system_labels)ASsl_reservationONsl_reservation.key='compute.googleapis.com/reservation_name'LEFTJOINUNNEST(t.system_labels)ASsl_project_idONsl_project_id.key='compute.googleapis.com/reservation_project_id'WHEREt.service.id='6F81-5844-456A'ANDDATE(TIMESTAMP_TRUNC(t._PARTITIONTIME,DAY))='2025-09-16'ANDt.sku.descriptionLIKE'%Core%'ANDsl_reservation.valueLIKE'%tc-billing-case2-res-1757983801%'GROUPBYconsumer_project_id,t.sku.description,usage_category,usage_unitORDERBYconsumer_project_id,usage_category;

Sample Results:

consumer_project_idsku_descriptionusage_categorytotal_usage_amountusage_unittotal_cost_usd
disco-sector-292704E2 Instance Core running in AmericasInstance Usage14551seconds0.088158
flash-freehold-292704E2 Instance Core running in AmericasInstance Usage7347seconds0.044512
united-sandbox-303721E2 Instance Core running in AmericasUnused Capacity7936seconds0.04808

List all the instances consuming a reservation

Similarly, we can write a query to understand all the instances that haveconsumed a given reservation during a given time period.

SELECTt.usage_start_time,t.usage_end_time,t.project.idASconsumer_project_id,t.resource.nameASinstance_name,t.usage.amountASusage_amountFROMproject-ID.dataset.gcp_billing_export_resource_v1_XAStLEFTJOINUNNEST(t.system_labels)ASsl_reservationONsl_reservation.key='compute.googleapis.com/reservation_name'WHEREt.service.id='6F81-5844-456A'ANDDATE(TIMESTAMP_TRUNC(t._PARTITIONTIME,DAY))='2025-09-16'ANDt.sku.descriptionLIKE'%Core%'ANDsl_reservation.valueLIKE'%tc-billing-case2-res-1757983801%'ANDt.resource.global_nameNOTLIKE'%allocation/%'ANDt.resource.nameISNOTNULLANDt.resource.name!=''ORDERBYt.usage_start_time,t.project.id,t.resource.name;

Sample Results:

usage_start_timeusage_end_timeconsumer_project_idinstance_nameusage_amount
2025-09-16 00:00:00.000000 UTC2025-09-16 01:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins0-1757983801552
2025-09-16 00:00:00.000000 UTC2025-09-16 01:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins1-1757983801533
2025-09-16 00:00:00.000000 UTC2025-09-16 01:00:00.000000 UTCflash-freehold-292704projects/978655420110/instances/tc-billing-case2-ins2-1757983801517
2025-09-16 01:00:00.000000 UTC2025-09-16 02:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins0-17579838013600
2025-09-16 01:00:00.000000 UTC2025-09-16 02:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins1-17579838013600
2025-09-16 01:00:00.000000 UTC2025-09-16 02:00:00.000000 UTCflash-freehold-292704projects/978655420110/instances/tc-billing-case2-ins2-17579838013600
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins0-17579838013022
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins0-175798380179
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins1-175798380179
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCdisco-sector-292704projects/204187533293/instances/tc-billing-case2-ins1-17579838013086
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCflash-freehold-292704projects/978655420110/instances/tc-billing-case2-ins2-17579838013151
2025-09-16 02:00:00.000000 UTC2025-09-16 03:00:00.000000 UTCflash-freehold-292704projects/978655420110/instances/tc-billing-case2-ins2-175798380179

Related topics

For information related to exported Cloud Billing data, see the following:

For details of the cost and pricing reports available in the Google Cloud console,see the following:

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.