详细数据导出的结构

本页面介绍导出到 BigQuery 每个表中的 Cloud Billing 详细使用费数据架构的参考信息。

详细使用费数据提供了标准使用费数据中包含的所有信息,以及提供精细的资源级费用数据的其他字段,例如产生服务用量的虚拟机或 SSD。详细的导出操作包括以下服务的精细费用信息:

  • Compute Engine
  • Google Kubernetes Engine (GKE)

    如需查看详细数据导出中的 GKE 集群费用明细,您还必须为 GKE 启用费用分配

  • Cloud Functions

  • Cloud Run

  • Cloud SQL

  • Cloud Spanner

  • App Engine

  • Firestore 和 Datastore

按服务确定精细的费用数据

如需分析详细导出中的精细费用信息,请使用下表来识别包含特定资源相关信息的列。

服务说明 如何识别资源
Compute Engine service.descriptionresource.nameresource.global_name

service.description 列包含服务的名称。resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

Google Kubernetes Engine (GKE) labels.key

使用以下标签键来过滤资源:

  • goog-k8s-cluster-name:按集群过滤 GKE 资源。
  • k8s-namespace:按命名空间过滤 GKE 资源。
  • k8s-label:查看所有 GKE 资源。

如需查看详细费用数据导出中的精细 GKE 集群费用,您还必须为 GKE 启用费用分配

请参阅在 BigQuery 导出中过滤 GKE 数据的示例查询

Cloud Functions service.descriptionresource.nameresource.global_name

service.description 列包含服务的名称。 resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

Cloud Run service.descriptionresource.nameresource.global_name

service.description 列包含服务的名称。resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

:此服务的第一个全天数据是 2022 年 12 月 1 日。
Cloud SQL service.descriptionresource.global_name

service.description 列包含服务的名称,而 resource.global_name 列包含资源的唯一标识符。

Cloud Spanner service.descriptionresource.global_name

service.description 列包含服务的名称,而 resource.global_name 列包含资源的唯一标识符。

App Engine service.descriptionresource.nameresource.global_name

service.description 列包含服务的名称。resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

Firestore 和 Datastore service.descriptionresource.nameresource.global_name

service.description 列为 App Engine。resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

BigQuery service.descriptionresource.nameresource.global_name

service.description 列包含服务的名称。resource.name 列包含用户提供的名称。resource.global_name 列包含资源的唯一标识符。

请参阅查询资源的精细数据示例

详细使用费数据的架构

在 BigQuery 数据集中,详细 Google Cloud 使用费数据会加载到名为 gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID> 的数据表中。

在 BigQuery 中使用详细使用费数据时,请注意以下事项:

  • 为详细使用费用数据选择或创建 BigQuery 数据集时,您可以选择任何支持与 Cloud Billing 数据搭配使用的数据集位置
  • 当您在 Cloud Billing 中首次启用详细使用费用数据导出时,如果您选择配置为使用多区域位置(欧盟或美国)的数据集,则 Cloud Billing 数据将从上月初开始以追溯方式提供。数据按时间顺序导出。对于导出数据的初始回填,追溯性 Cloud Billing 数据最多可能需要 5 天完成导出,然后您才能开始看到最新的使用情况数据。
  • 如果您启用详细使用费用数据导出并选择配置为使用受支持的单区域位置的数据集,则 Cloud Billing 数据将从您启用导出之日起开始提供。
  • 如果您启用,停用且随后重新启用详细使用费用数据导出,可能不提供明确停用数据导出的时间段内的 Cloud Billing 数据。
  • 详细了解数据加载到 BigQuery 表的频率
  • 请查看可能会影响将结算数据导出到 BigQuery 的其他限制,例如启用了客户管理的加密密钥 (CMEK) 的数据集。
  • 启用详细使用费数据(而非标准使用费数据)时,请考虑 BigQuery 表可能需要的额外数据量以及额外费用。增加资源级信息的粒度会增加行数,系统会以标准使用费格式进行汇总。我们建议您查看在 BigQuery 中控制费用,以进一步了解管理 BigQuery 费用的最佳实践。
字段 类型 说明
billing_account_id 字符串

与使用量相关的 Cloud Billing 账号 ID。

对于转销商:对于 Cloud Billing 子账号产生的使用费,这是子账号的 ID,而不是 Cloud Billing 转销商父级账号的 ID。

invoice.month 字符串

包含费用专列项的账单的年份和月份 (YYYYMM)。例如:“201901”相当于 2019 年 1 月。

您可以使用此字段获取账单上的总费用。请参阅将 Cloud Billing 数据导出至 BigQuery 查询的示例

cost_type 字符串

此专列项代表的费用类型:常规项、税费、调整项和舍入误差费用。

service.id 字符串 与使用情况关联的服务的 ID。
service.description 字符串 报告 Cloud Billing 数据的 Google Cloud 服务。
sku.id 字符串 服务使用的资源的 ID。如需查看 SKU 的完整列表,请参阅 Google Cloud SKU
sku.description 字符串 服务使用的资源类型说明。例如,Cloud Storage 的资源类型是“Standard Storage US”。
usage_start_time 时间戳 计算指定费用的每小时使用时间段的开始时间。所有服务的用量/费用按小时显示,也就是说,长时间运行的服务的用量横跨多个每小时时间段。

如需了解详情,请参阅有关时间戳数据类型的 BigQuery 文档。另请参阅下文的导出的数据和账单之间的区别

usage_end_time 时间戳 计算给定费用的每小时使用时间段的结束时间。所有服务的用量/费用按小时显示,也就是说,长时间运行的服务的用量横跨多个每小时时间段。

如需了解详情,请参阅有关时间戳数据类型的 BigQuery 文档。另请参阅下文的导出的数据和账单之间的区别

project 结构体 project 包含描述 Cloud Billing 项目的字段,例如 ID、编号、名称、祖先编号和标签。
project.id 字符串 生成 Cloud Billing 数据的 Google Cloud 项目的 ID。
project.number 字符串 为生成 Cloud Billing 数据的 Google Cloud 项目内部生成的匿名化的唯一标识符。在您的支持请求和其他客户沟通中,Google 将通过此项目编号引用项目。
project.name 字符串 生成 Cloud Billing 数据的 Google Cloud 项目的名称。
project.ancestry_numbers 字符串 项目(由指定 project.id 标识,例如 my-project-123)的资源层次结构中的祖先。

例如:/ParentOrgNumber/ParentFolderNumber/。详细了解资源层次结构

project.ancestors 结构体

此字段描述了费用专列项的资源层次结构的结构和值,包括项目、文件夹和组织。祖先实体按节点是从节点到根排序(项目、文件夹,再到组织)。

project.ancestors.resource_name 字符串 每个祖先实体的相对资源名称,格式为“resourceType/resourceNumber”。使用 project.ancestors.resource_name 可提供更完整的 project.ancestry_numbers 视图。
project.ancestors.display_name 字符串 您在控制台中为资源创建的名称。
project.labels.key 字符串 如果存在标签,则为键值对中的键部分,键值对包含发生了使用的 Google Cloud 项目中的标签。如需详细了解如何使用标签,请参阅使用标签
project.labels.value 字符串 如果存在标签,则为键值对中的值部分,键值对包含发生了使用的 Google Cloud 项目中的标签。如需详细了解如何使用标签,请参阅使用标签
labels.key 字符串 如果存在标签,则为键值对中的键部分,键值对包含发生了使用的 Google Cloud 资源中的标签。如需详细了解如何使用标签,请参阅使用标签
labels.value 字符串 如果存在标签,则为键值对中的值部分,键值对包含发生了使用的 Google Cloud 资源中的标签。如需详细了解如何使用标签,请参阅使用标签
system_labels.key 字符串 如果存在系统标签,则为键值对的键部分,包含发生了使用的资源中的系统生成的标签。另请参阅可用的系统标签
system_labels.value 字符串 如果存在系统标签,则为键值对的值部分,包含发生了使用的资源中的系统生成的标签。另请参阅可用的系统标签
location.location 字符串 多区域、国家/地区、单区域或可用区层级的使用位置;或者是 global,表示资源没有特定位置。如需了解详情,请参阅地理位置和区域以及 Google Cloud 位置
location.country 字符串 location.location 是国家/地区、区域或可用区时,此字段是发生了使用的国家/地区,例如 US。如需了解详情,请参阅地理位置和区域以及 Google Cloud 位置
location.region 字符串 location.location 是区域或可用区时,此字段是发生了使用的区域,例如 us-central1。如需了解详情,请参阅地理位置和区域以及 Google Cloud 位置
location.zone 字符串 location.location 是可用区时,此字段是发生了使用的可用区,例如 us-central1-a。如需了解详情,请参阅地理位置和区域以及 Google Cloud 位置
cost 浮点数 不计任何赠金的使用费,精确到小数点后六位。如需获得包含赠金的总费用,应将所有 credits.amount 添加到费用中。如需了解详情,请参阅此查询示例
currency 字符串 费用的结算币种。如需了解详情,请参阅结算和付款支持的本地货币
currency_conversion_rate 浮点数 美元兑本地货币的汇率。也就是说,cost ÷ currency_conversion_rate 得出以美元为单位的费用。
usage.amount 浮点数 所用 usage.unit 的数量。
usage.unit 字符串 用于计量资源用量的基本单位。例如,标准存储空间的基本单位是字节/秒。
usage.amount_in_pricing_units 浮点数 所用 usage.pricing_unit 的数量。
usage.pricing_unit 字符串 根据 Cloud Billing Catalog API 计量资源用量的单位。
credits 结构体 credits 包含的字段描述与 Google Cloud 和 Google Maps Platform SKU 关联的赠金的结构和值。
credits.id 字符串 如果存在,则表示赠金与产品 SKU 相关联。 credits.id 值要么是字母数字的唯一标识符(例如,12-b34-c56-d78),要么是赠金类型说明(例如,承诺使用折扣:CPU)。

如果 credits.id 字段为空,则产品 SKU 未与赠金相关联。

credits.full_name 字符串 与产品 SKU 关联的赠金名称。这是字母数字 credits.id 的直观易懂的说明。示例包括:免费试用赠金基于支出的承诺使用折扣

credits.full_name 值仅适用于具有字母数字 credits.id 的 SKU。如果 credits.id 的值是赠金类型(如承诺使用折扣:CPU)的说明,则 credits.full_name 字段将为空。

credits.type 字符串 此字段说明 credits.id 的用途或来源。 赠金类型包括:
  • COMMITTED_USAGE_DISCOUNT:为 Compute Engine 购买的基于资源的承诺使用合约,以获得大幅度的虚拟机使用费折扣。
  • COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE:为服务购买的基于支出的承诺使用合约,旨在换取您的最低消费额承诺。
  • DISCOUNT:折扣赠金类型用于达到合同支出阈值后获得的赠金。请注意,在 Google Cloud 控制台提供的 Cloud Billing 报告中,折扣赠金类型被列为“基于支出的折扣(按合同规定)”
  • FREE_TIER:某些服务提供在指定限额内提供免费的资源使用。对于这些服务,赠金用于实现免费层级使用量。
  • PROMOTION:促销赠金类型包括 Google Cloud 免费试用和营销活动赠金,或其他 Google Cloud 用量补贴。在适用情况下,促销赠金会被视为一种付款方式,并会自动应用以减少您的账单总额。
  • RESELLER_MARGIN:如果您是转销商,转销商利润赠金类型表示每个符合条件的专列项获得的转销商计划折扣。
  • SUBSCRIPTION_BENEFIT:通过购买服务的长期订阅以换取折扣而获得的赠金。
  • SUSTAINED_USAGE_DISCOUNT:持续使用折扣赠金类型是因在结算月份的大部分时间内运行特定 Compute Engine 资源而获得的自动折扣。
credits.name 字符串 对 Cloud Billing 账号应用的赠金的说明。
credits.amount 浮点数 对使用量应用的赠金金额。
adjustment_info 结构体 adjustment_info 包含的字段说明与 Cloud Billing 账号关联的费用专列项的调整项的结构和值。

仅当为 Cloud Billing 修改生成了费用专列项时,才会显示 adjustment_info 值。更正或非更正原因均可能导致修改。adjustment_info 类型包含调整项的详细信息,无论调整项是出于更正错误还是其他原因发出。

adjustment_info.id 字符串 如果存在,则表示费用专列项有一个关联的调整项。adjustment_info.id 是某个问题导致的所有关联调整项的唯一 ID。
adjustment_info.description 字符串 调整项及其原因的说明。
adjustment_info.type 字符串

调整项的类型。

类型包括:

  • USAGE_CORRECTION:错误报告的使用量导致的更正。
  • PRICE_CORRECTION:错误的定价规则导致的更正。
  • METADATA_CORRECTION:为修复元数据进行的更正,不更改费用。
  • GOODWILL:出于善意向客户发放的赠金。
  • SALES_BASED_GOODWILL:作为合同的一部分,出于善意向客户发放的赠金。
  • SLA_VIOLATION:由于服务等级目标 (SLO) 违规而向客户发放的赠金。
  • BALANCE_TRANSFER:将资金从一个付款账号转移到另一个付款账号的调整项。
  • ACCOUNT_CLOSURE:将已关闭账号的余额变为零的调整项。
  • GENERAL_ADJUSTMENT:常规的结算账号修改。
adjustment_info.mode 字符串

发出调整项的方式。

模式包括:

  • PARTIAL_CORRECTION:更正部分取消原始使用量和费用。
  • COMPLETE_NEGATION_WITH_REMONETIZATION:更正完全取消原始使用量和费用,并使用更新后的使用量和费用发出更正后的专列项。
  • COMPLETE_NEGATION:更正完全取消原始使用量和费用,并且不再重新计算使用量的费用。
  • MANUAL_ADJUSTMENT:手动将调整项分配给费用和使用量。
export_time 时间戳 与附加的 Cloud Billing 数据关联的处理时间。 每次导出新数据时,该值都会增加。
另请参阅下文的导出的数据和账单之间的区别
tags 结构体

描述标记的字段,例如键、值和命名空间。

tags.key 字符串

与此特定标记关联的键的简称或显示名。

tags.value 字符串

附加到 tags.key 的资源。在任何给定时间,对于给定键,一个资源只能附加一个值。

tags.inherited 布尔值

指示标记绑定是继承的(继承的标记 = True)还是直接的/非继承的(继承的标记 = False)。您可以创建标记绑定来与资源层次结构中的父资源进行关联。

cost_at_list 浮点数

与计入您的 Cloud Billing 账号的所有专列项关联的定价。

tags.namespace 字符串

表示定义标记键和值的资源层次结构。命名空间可以与标记键和标记值简称组合使用,以为标记键或标记值创建全局唯一的完全限定名称。

transaction_type 字符串

卖家的交易类型。交易类型可能是以下各项之一:

  • GOOGLE = 1:Google Cloud 销售的服务。
  • THIRD_PARTY_RESELLER = 2:Google Cloud 转售的第三方服务。
  • THIRD_PARTY_AGENCY = 3:合作伙伴销售的第三方服务,由 Google Cloud 充当代理。
seller_name 字符串

卖家的法定名称。

可用于导出详细使用费数据的其他字段
resource 结构体

这些字段描述产生服务用量的服务资源(例如虚拟机或 SSD)的相关信息的结构和值。

resource.global_name 字符串

产生相关用量的资源的全局唯一服务标识符。

resource.name 字符串

生成相关用量的资源的特定于服务的标识符。这可以是用户生成的输入。

price 结构体

描述与支付的使用费相关的结构和值的字段。

price.effective_price 数字

系统会收取 Google Cloud 或 Google Maps Platform SKU 和 SKU 价格层级使用费。如果您的 Cloud Billing 账号具有自定义合同价格,则这是特定于结算账号的价格;否则,这是 SKU 或 SKU 层级的定价

price.tier_start_amount 数字

SKU 价格层级的下限单位数。例如,具有三个价格层级(例如 0-100 个单位、101-1,000 个单位和 1,001 个以上单位)的 SKU 会显示 SKU 的三行价格,其中 price.tier_start_amount 字段中的 0、101 和 1,001 表示 SKU 价格层级的起始单位数量。

详细了解价格层级
price.unit 字符串

指定价格和衡量资源用量所依据的使用单位(例如 GiB、TiB、月、年、GiB/小时、GiB/月或计数)。price.unit 字段中的值与 usage.pricing_unit 字段中的值匹配。

price.pricing_unit_quantity 数字

SKU 的价格层级单位数量。例如,如果层级价格是每 1,000,000 个字节 $1,则此列将显示 1,000,000

了解标准和详细使用费数据

以下部分介绍了导出到 BigQuery 的标准和详细使用费数据

标签简介

您会在 BigQuery 数据集中看到标签的相关列,但对于当前版本,部分标签值将为空。系统将在不同的时间为不同的服务填充标签导出数据,具体取决于每项服务提供数据的时间。

可用的系统标签

系统标签是关于发生了使用的资源的重要元数据的键值对。以下系统标签会自动包含在适用的使用情况中。

system_labels.key system_labels.value 示例 说明
compute.googleapis.com/machine_spec n1-standard-1、custom-2-2048 虚拟机的配置。如需了解详情,请参阅机器类型
compute.googleapis.com/cores 如果是 n1-standard-4,则为 4;如果是 custom-2-2048,则为 2 可供虚拟机使用的 vCPU 数。
compute.googleapis.com/memory 如果是 n1-standard-4,则为 15360(即 15 GB * 1024 MB/GB);如果是 custom-2-2048,则为 2048 可供虚拟机使用的内存量(以 MB 为单位)。
compute.googleapis.com/is_unused_reservation true;false 表示通过可用区级预留预留但未使用的用量。

导出的数据和账单之间的区别

由于 Google Cloud 服务会以不同的时间间隔向 Cloud Billing 进程报告使用情况和费用数据,因此您对 Google Cloud 资源的使用与 BigQuery 表中显示的使用费用之间存在延迟现象。 在某个日历月月末,延迟报告的使用量可能不包含在当月的账单中,而是延至下月的账单。

当您使用时间戳字段查询费用时,返回的数据可能会提取最初未显示在当月生成的账单上且应在以后报告的使用情况。因此,返回的 Cloud Billing 数据可能不会直接反映到该账单上。

时间戳字段包括:

  • usage_start_time
  • usage_end_time
  • export_time

如需返回直接反映到账单的 Cloud Billing 数据,请对 invoice.month 而不是时间戳字段运行查询。

税费

2020 年 9 月 1 日开始,使用费数据会显示每个项目(而非单个专列项)的纳税金额。如果您的查询或可视化内容依赖于税务数据,您可能需要更新这些查询以体现这些变化。

例如,对于 9 月 1 日之前记录的费用,您的使用费数据类似于以下示例,其中展示了 $10 的总纳税金额。

billing_account_id project.id cost_type cost
123456-ABCDEF-123456 示例项目 常规 $60
123456-ABCDEF-123456 测试项目 常规 $40
123456-ABCDEF-123456 [空] 税费 $10

对于 9 月 1 日之后记录的费用,$10 将细分为 $6 用于 example-project,$4 用于 test-project

billing_account_id project.id cost_type cost
123456-ABCDEF-123456 示例项目 常规 $60
123456-ABCDEF-123456 测试项目 常规 $40
123456-ABCDEF-123456 示例项目 税费 $6
123456-ABCDEF-123456 测试项目 税费 $4

错误和调整

请注意,万一您的 Cloud Billing 数据中包含错误或需要进行调整,系统会在其中附加 Cloud Billing 数据以排除类似错误。除以下列之外,所有其他列都将保持不变:

  • cost
  • credit
  • usage.amount
  • export_time

如需确定哪些数据是新数据,只需查询 export_time 即可。

在导出的数据中,Cloud Billing 调整和相关税费的账单月份反映了调整项发布的月份。不过,调整项可以应用于除调整项发布的月份以外的其他月份。如需了解是否应用了调整项以及应用调整项的位置,您需要在 Google Cloud 控制台的文档页面中查看账单或贷记/借记通知单文档。如需详细了解如何分析调整项以及应用调整项的方式,请参阅了解通知单和调整项

自定义价格合同中的赠送金额简介

如果您拥有自定义价格合同,则作为合同的一部分,您可能会获得可在 Google Cloud 上使用的促销赠金。例如,您可能会收到 $1000,该笔赠金可用于 Compute Engine 资源。促销赠金通常被视为一种付款方式。系统会自动应用赠送金额(如果可用)以减少您的总账单费用。

合同条款规定了赠送金额是适用于按 SKU 定价计算的费用还是按净价(折扣后)计算的费用

如果您的赠送赠金适用于按定价计算的费用,则费用表报告中会有一个名为 Invoice 的服务,其 SKU 名为 Contract billing adjustment。此 SKU 会调整您的赠金,以适用于按定价计算的费用。如要查看调整项适用的使用量,请查询 system.labels 列。system.labels.key 中的键是 cloud-invoice.googleapis.com/sku_idsystem.labels.value 中的值包含赠金和调整项适用的 SKU ID。

关于标记

<atrack-type="tasks"track-name="internallink"track-metadata-position="body" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="iUWjxJRweELRfbeZQy/YQwc9zZofjBXGTjbrIegRjdnVz6nUhi3jRGB4DwvsPvv3">标记是一种键值对形式的资源,可以直接附加到资源,也可以通过继承机制附加到资源。您可以使用标记来执行退款、审核以及进行其他费用分配分析。您还可以使用标记并有条件地执行政策,以便在资源层次结构内进行精细控制。</atrack-type="tasks"track-name="internallink"track-metadata-position="body">

标记拥有强大的权限模型,可以支持继承、集中式管理、命名法标准化及政策引擎集成,而 <atrack-type="tasks"track-name="internallink"track-metadata-position="body" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="VL5eQBNGQ+VFZ8Ic4FEC0gc9zZofjBXGTjbrIegRjdloWDKjJtF205jHQgIOO0QT5mGjae8t5DMH2GXg6ydeww=="> 标签则是一款单独的工具,您可以使用标签来为资源添加注解。</atrack-type="tasks"track-name="internallink"track-metadata-position="body">

标记数据会显示在资源、项目、文件夹和组织的 BigQuery 导出结果中。

可用标记

资源、项目、文件夹和组织的“标准费用”和“详细费用”导出结果包括以下标记数据字段:标记键、标记值、继承的标记和标记命名空间。

标记限制

  • Cloud Billing 数据导出中的资源级标记仅限用于 Compute Engine 和 Spanner 实例。

  • 标记最多可能需要一个小时才能传播到 BigQuery 导出结果中。如果标记是在一个小时内被添加或移除的,或者资源存在的时间不超过一个小时,则这些被添加或移除的标记可能不会反映在导出结果中。

详细使用费查询示例

本部分提供了查询导出到 BigQuery 的 Cloud Billing 详细使用费数据的示例。

由于详细使用费架构包含标准使用费架构中的所有字段,因此为导出到 BigQuery 的标准数据提供的查询示例同样适用于导出的详细数据。请注意,标准查询示例并不用于检索详细使用费导出选项提供的任何资源级信息。创建详细数据的查询时,您可以使用标准查询示例作为模板,更新表名称,并添加详细使用费架构中提供的任何字段。

详细费用查询示例中使用的常用值

本部分中的查询示例使用以下值作为表名称project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX

返回账单中的资源级费用

以下查询演示了使用导出的结算数据查看账单上的资源级费用和赠金值的两种方法。

  • total 字段直接对浮点费用和赠金值求和,可能会产生浮点舍入误差。
  • total_exact 字段在求和之前将费用和赠金值转换为 micros,然后在求和后转换回美元,以避免产生浮点舍入误差。

计算每项资源每个账单的总费用

此查询显示了每个 resource.name 每个月的账单总额,即常规费用、税费、调整项和舍入误差的总和。与资源级项没有关联的所有当月费用都会汇总到名称 null 下。

标准 SQL

SELECT
  invoice.month,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

例如,上述查询的结果可能是:

名称 总计 total_exact
1 201901 null $1005.004832999999984 $1005.00
2 201901 backend1 $781.8499760000028 $781.85
3 201902 null $953.0034923645475983 $953.03
4 201902 backend1 $992.3101739999999717 $992.31
5 201902 bitnami-launchpad-wordpress-1-wordpress $1.2817819999999998 $1.28

按费用类型返回每项资源每个账单月的详细信息

此查询显示了每个 resource.name 每个月各 cost_type 的总费用。费用类型包括常规费用、税费、调整项和舍入误差。与资源级项没有关联的所有当月费用都会汇总到名称 null 下。

标准 SQL

SELECT
  invoice.month,
  cost_type,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY 1, 2, 3
ORDER BY 1 ASC, 2 ASC, 3 ASC
;

例如,上述查询的结果可能是:

费用类型 名称 总计 total_exact
1 201901 regular null $1000.501209987994782 $1000.50
2 201901 rounding_error null –$0.500489920049387 –$0.50
3 201901 tax null $10.000329958477891 $10.00
4 201901 adjustment null –$5.002572999387045 –$5.00
5 201901 regular backend1 $410.998795012082947 $411.00
2 201901 rounding_error backend1 –$0.2404900489920378 –$0.24
3 201901 tax backend1 $4.105840329977189 $4.11

获取 Google Kubernetes Engine (GKE) 集群费用明细

本部分提供了在 BigQuery 导出报告中过滤 GKE 集群费用的示例。如需详细了解 GKE 集群费用,请参阅查看集群费用明细

过滤 GKE 费用

以下示例查询展示了如何按集群名称、命名空间和标签对所支持资源类型的 GKE 费用进行过滤和分组。

抵扣赠金之前的 GKE 集群费用

SELECT
  SUM(cost) AS cost_before_credits,
  labels.value AS cluster_name
FROM  `project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY labels.value
;

抵扣赠金之后的 GKE 费用(按命名空间)

SELECT
  labels.value as namespace,
  SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits,
FROM `project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "k8s-namespace"
GROUP BY namespace
;

GKE 费用(按 SKU)

SELECT
  project.id AS project_id,
  labels.value AS cluster_name,
  sku.id AS sku_id,
  sku.description AS sku_description,
  SUM(cost) AS cost
FROM `project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
JOIN UNNEST(labels) AS labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY
  cluster_name, project_id, sku_description, sku_id
;

通过标记进行查询的示例

以下示例演示了使用标记查询数据的方法。

使用标记按账单月份计算费用

以下查询演示了如何使用 cost_center 标记按账单月份计算退货费用。

SELECT
  invoice.month AS invoice_month,
  tag.value AS cost_center,
  ROUND((SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0))), 2)
    AS net_cost
FROM `ivory-vim-309221.billing_export_dataset.gcp_billing_export_resource_v1_018ADD_3CEBBB_A4DF22`, UNNEST(tags) AS tag
WHERE tag.key = "cost_center" AND tag.namespace = "821092389413"
GROUP BY invoice.month, tag.value
ORDER BY invoice.month, tag.value;

例如,上述查询的结果可能是:

invoice_month cost_center net_cost
1 202208 android_mobile_apps 9.93
2 202208 ios_mobile_apps 9.93
3 202209 android_mobile_apps 25.42
4 202209 ios_mobile_apps 25.4
5 202209 personalization 16.08

查看未标记资源的费用

此查询显示未标记资源的账单总额,按账单月份分组。

SELECT
 invoice.month AS invoice_month,
 ROUND((SUM(CAST(cost AS NUMERIC))
   + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                 FROM UNNEST(credits) AS c), 0))), 2)
   AS net_cost
FROM
 `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE "color" NOT IN (SELECT key FROM UNNEST(tags))
GROUP BY invoice_month
ORDER BY invoice_month;

例如,上述查询的结果可能是:

invoice_month net_cost
1 202202 0
2 202203 16.81
3 202204 54.09
4 202205 55.82
5 202206 54.09
6 202207 55.83
7 202208 31.49

Google Cloud 控制台中提供的费用和价格报告