详细数据导出的结构

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

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

  • Compute Engine
  • Cloud Storage
  • Google Kubernetes Engine (GKE)

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

  • Cloud Functions

  • Cloud Run

  • Cloud SQL

  • Spanner

  • App Engine

  • Firestore 和 Datastore

  • Memorystore for Redis

  • Bigtable

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

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

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

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

Cloud Storage service.descriptionresource.global_name

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

Google Kubernetes Engine (GKE) labels.key

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

  • goog-fleet-project:如果集群已注册到舰队,则按舰队宿主项目过滤集群资源。
  • goog-k8s-cluster-location:按位置过滤 GKE 资源。
  • goog-k8s-cluster-name:按集群过滤 GKE 资源。
  • goog-k8s-node-pool-name:按节点池过滤集群资源。
  • k8s-namespace:按命名空间过滤 GKE 资源。
  • k8s-namespace-labels:按舰队命名空间标签过滤 GKE 资源(仅限 GKE Enterprise 客户)。
  • 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 列包含资源的唯一标识符。

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 列包含资源的唯一标识符。

Dataflow service.descriptionresource.nameresource.global_name

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

Memorystore for Redis service.descriptionresource.global_name

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

Bigtable service.descriptionresource.global_name

service.description 列包含服务的名称。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)。您可以创建标记绑定来与资源层次结构中的父资源进行关联。

tags.namespace 字符串

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

cost_at_list 浮点数

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

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

subscription 结构体

描述基于支出或基于资源的承诺的字段。 您可以使用这些字段来分析特定承诺的费用。

subscription.instance_id 字符串

与承诺关联的订阅 ID。

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

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

标签简介

特定标签的费用数据仅显示自该标签应用于资源之日起的使用情况。例如,如果您在 2024 年 1 月 15 日向 Compute Engine 虚拟机添加标签 environment:dev,则对 environment:dev 的任何分析都仅包括 1 月 15 日以后该虚拟机的使用情况。

您可能还会看到不同服务在不同时间的标签数据,具体取决于每项服务提供相应数据的时间。

可用的系统标签

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

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 服务与可在 Cloud Billing 中查看的使用量和费用之间看到延迟现象。通常,您的费用在一天内可以体现出来,但有时可能需要 24 小时以上。

在某个日历月月末,延迟报告的使用量可能不包含在当月的账单中,而是延至下月的账单。

当您使用时间戳字段查询费用时,返回的数据可能会提取最初未显示在当月生成的账单上且应在以后报告的使用情况。因此,返回的 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 到 BigQuery 的导出操作中的新专列项会显示更改。显示的调整项与 Google Cloud 控制台结算部分的文档区域中提供的账单、贷记通知单和借记通知单文档相对应。

如需详细了解结算修改及其应用方式,请参阅了解通知单和调整项

拼写更正

更正显示为新数据,从而排除源 SKU 上的错误数据。在某些情况下,系统会提供新数据来取代错误的费用。结算数据导出中的所有列都将与原始数据匹配,但以下列除外:

  • cost
  • credit
  • usage.amount
  • export_time

例如,假设您在 1 月 1 日为使用 SKU A 支付了 10 美元。在 1 月的账单(2 月初开具)上,您会看到 SKU A 的费用为 $10。但是,2 月 2 日,Google Cloud 针对 SKU A 发出了更正,将使用费降低到 $5。您将在 2 月份的账单(3 月初开具)上额外收到两个专列项:

  • 1 月 1 日的费用为 -$10(抵扣原费用)
  • 1 月 1 日的用量为 $5(说明预期费用)

这些新专列项在结算数据导出中有一个 adjustment_info 列。显示超额费用的 1 月份原始账单不会被调整。您可以通过按 usage_start_time 查看费用并按 Day 分组来验证结算数据导出中的费用。 在这些视图中,延迟获利使用量的任何更正或费用都将累积,您无需担心任何暂时不正确的数据。

如需详细了解更正信息,请查看账单月份中的所有费用,并查找使用日期早于账单月份的费用。这些费用是更正或延迟获利用量产生的费用。

以下代码示例展示了如何为此创建查询:

SELECT
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
      FROM   UNNEST(credits) c), 0))
    AS total
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
  WHERE
  invoice.month = '202311' AND
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2023-11-01';

关于自定义定价合同中的赠送金额

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

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

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

关于标记

标记是键值对形式的资源,可直接或通过继承关联到资源。您可以使用标记来执行退款、审核以及进行其他费用分配分析。您还可以使用标记并视情况执行政策以便在资源层次结构内进行精细控制。

标记拥有强大的权限模型,可以支持继承、集中式管理、命名法标准化及政策引擎集成,而标签则是一款单独的工具,您可以使用标签来为资源添加注解。

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

可用标记

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

Cloud Billing 数据导出中的资源级标记适用于以下资源:

  • Compute Engine 实例
  • Cloud Storage 存储桶
  • Spanner 实例
  • Cloud Run 服务和作业
  • Artifact Registry 制品库
  • Memorystore for Redis 实例

标记限制

  • 标记最多可能需要一个小时才能传播到 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 控制台中提供的费用和价格报告