价格数据导出的结构

本文档介绍了导出到 BigQuery 每个表中的 Cloud Billing 价格数据架构的参考信息。

价格数据的架构

在 BigQuery 数据集中,您的 Cloud Billing 账号价格数据会加载到名为 cloud_pricing_export 的数据表中。

以下信息介绍导出到 BigQuery 的 Cloud Billing 账号价格数据的架构。

字段 类型 说明
export_time 时间戳 与附加的 Cloud Billing 数据关联的处理时间。每次导出新数据时,该值都会增加。
pricing_as_of_time 时间戳 系统每天生成一次适用于您的 Cloud Billing 账号的价格数据,以准备导出到 BigQuery。这是生成价格数据时的每日时间戳。
billing_account_id 字符串 与价格关联的 Cloud Billing 账号 ID。
billing_account_name 字符串

与价格关联的 Cloud Billing 账号的名称。

business_entity_name 字符串 提供 SKU 的服务的 Google 服务系列名称。值包括 GCP (Google Cloud) 或 Maps (Google Maps Platform)。
service.id 字符串 报告 Cloud Billing 数据的 Google Cloud 服务或 Google Maps Platform API 的 ID。例如,6F81-5844-456A。
service.description 字符串 报告了 Cloud Billing 数据的 Google Cloud 服务或 Google Maps Platform API 的说明。例如,Compute Engine。
sku.id 字符串 服务使用的资源 SKU 的唯一标识符。例如,2E27-4F75-95CD。如需查看 SKU 的完整列表,请参阅 Google Cloud SKU
sku.description 字符串 服务使用的资源 SKU 的人类可读的说明。例如,在美洲运行的 N1 预定义实例核心。
sku.destination_migration_mappings 字符串数组 将向其中迁移此 SKU 的目标 SKU 名称。
product_taxonomy 字符串数组 适用于 SKU 的产品类别列表,例如无服务器、Cloud Run、TaskQueue、按需虚拟机数、核心数:每个核心等。
geo_taxonomy 结构体 适用于 SKU 的地理元数据,例如地区和多地区(如us-east4 欧盟)。
geo_taxonomy.type 字符串 与 SKU 关联的地理元数据的类型。有效值包括:
  • GLOBAL - 无区域
  • REGIONAL - 包含一个区域
  • MULTI_REGION - 包含两个或更多区域
geo_taxonomy.regions 字符串数组 与 SKU 关联的 Google Cloud 地区。例如 Europe-west2US

单地区位置是具体的地理位置,如伦敦。 多地区位置是至少包含两个地理位置的大型地理位置,如美国。

pricing_unit 字符串 定价所依据的使用量单位的简称(例如“GiBy.mo”)。
pricing_unit_description 字符串 使用量单位的人类可读的说明(例如“吉比字节月”)。
account_currency_code 字符串 Cloud Billing 账号采用的货币,使用 ISO 4217 中定义的由三个字母组成的货币代码。如需了解详情,请参阅用于结算和自动付款的本地货币
currency_conversion_rate 字符串 美元兑 Cloud Billing 账号采用的本地货币的汇率。如果 Cloud Billing 账号的货币是美元,则汇率默认为 1.0。

如果您的 Cloud Billing 费用以非美元货币结算,您可以使用下列公式将使用费转换为美元:cost ÷ currency_conversion_rate = 以美元结算的使用费。

按本地货币收费时,Google 会根据主要金融机构发布的汇率将所列价格转换为相应的本地货币。包括针对以非美元货币结算而收取的任何附加费。我们将使用对 pricing_as_of_time 有效的汇率。

list_price 结构体

Google Cloud 或 Google Maps Platform SKU 和 SKU 的价格层级的定价从 pricing_as_of_time 起开始生效。

list_price 包含说明定价结构和值的字段,其中包括:

如需了解定价,请访问 list_price.tiered_rates.usd_amount

将为所有客户生成和导出定价数据。如果您的 Cloud Billing 账号具有自定义的合同价格,则还会导出结算账号特定的价格。

billing_account_price 结构体

如果您有合同价格,则这是与您的 Cloud Billing 账号关联的合同中的自定义 SKU 价格。

billing_account_price 包含一些字段,说明 Google Cloud、Google Maps Platform SKU 和 SKU 的价格层级中自定义合同价格的结构和值。billing_account_price 包括:

您的合同价格(适用于您的 Cloud Billing 账号)可在billing_account_price.tiered_rates.usd_amount

price_info 结构体 合同价格的背景信息。
price_info.price_reason 字符串

合同价格来源的背景信息。

原因包括:

  • DEFAULT_PRICE:默认价格是此 SKU 的当前定价。
  • FIXED_PRICE:在合同协议期间适用的 SKU 的固定价格。
  • FIXED_DISCOUNT:定价的折扣百分比,以应用折扣当日的定价为基础。
  • FLOATING_DISCOUNT:当前定价的折扣百分比(不以具体日期的定价为基础)。
  • MIGRATED_PRICE:适用于从其他 SKU 迁移过来的价格。
  • MERGED_PRICE:从多个来源合并后的 SKU 价格。例如,对于合并的层级,每个单独的层级都可以来自具有不同折扣类型的不同来源。
  • LIST_PRICE_AS_CEILING:这是一个可选合同功能,在 2022 年 3 月 21 日之后可用于新合同。在有效期内,如果当前定价低于自定义固定价格,则定价 (DEFAULT_PRICE) 将用于 SKU 价格。适用于合同中的所有固定价格 SKU,包括 FIXED_PRICE、FIXED_DISCOUNT、MIRATED_PRICE 和 MERGED_PRICE。
  • CONTRACTED_PRICE_PROTECTION:此项适用于合同中价格受保护的 SKU。这种情况很少出现。
price_info.discount_percent 数字 对于应用了百分比折扣(FIXED_DISCOUNTFLOATING_DISCOUNT)的合同价格,这是使用的百分比折扣。
price_info.discount_percent_fixed_date 日期 对于限定于特定日期 (FIXED_DISCOUNT) 并应用了百分比折扣的合同价格,这是使用的日期。
price_info.discount_migrated_from 字符串 对于从其他 SKU (MIGRATED_PRICE) 迁移的合同价格折扣,这是折扣的来源 SKU。有时,将一个 SKU 拆分成两个时,折扣会从旧的 SKU 迁移到新的 SKU。
aggregation_info 结构体 表示单个 SKU 的 价格层级的汇总层级和间隔。
aggregation_info.aggregation_level 字符串 是指在哪个级别汇总使用量以计算价格层级的费用。

级别包括:

  • ACCOUNT:表示采用多层级价格的 SKU;价格层级的 SKU 使用量会在单个 Cloud Billing 账号的所有项目中进行汇总。
  • PROJECT:表示采用多层级价格的 SKU;每个项目的价格层级的 SKU 使用量会进行汇总。
  • UNKNOWN_AGGREGATION_LEVEL:表示采用单层级价格的 SKU;这是采用未分层价格的 SKU 的默认值。
aggregation_info.aggregation_interval 字符串 是指汇总使用量以计算价格层级费用的时间间隔。

间隔包括:

  • ONE_DAY:表示采用多层级价格的 SKU;价格层级的 SKU 使用量每天进行汇总。
  • ONE_MONTH:表示采用多层级价格的 SKU;价格层级的 SKU 使用量每月进行汇总。
  • UNKNOWN_AGGREGATION_INTERVAL:表示采用单层级价格的 SKU;这是采用未分层价格的 SKU 的默认值。
tiered_rates 字符串数组 定价层级的相关信息,包括以美元为单位的 SKU 价格以及以 Cloud Billing 账号配置使用的货币为单位的 SKU 价格。

某些 SKU 只有一个价格层级。如果一个 SKU 有多个价格层级,则每个价格层级都会以单独的行显示。您可以使用 tiered_rates.start_usage_amount 识别具有多个价格层级的 SKU。

tiered_rates.pricing_unit_quantity 浮点数 SKU 的价格层级单位数量。例如,如果层级价格是每 1000000 个字节 $1,则此列将显示 1000000。
tiered_rates.start_usage_amount 浮点数 指定价格层级的数量下限,以价格单位度量。例如,具有 3 个价格层级(如 0-100 个单位、101-1000 个单位和 1001 个以上单位)的 SKU 会显示 3 行价格,其中 0、101 和 1001 分别为 [tiered_rates].start_usage_amount 这三个值。
tiered_rates.usd_amount 数字 SKU 的价格(以美元为单位)。
tiered_rates.account_currency_amount 数字 使用 currency_conversion_rate,将 SKU 的层级价格从美元换算为 Cloud Billing 账号配置使用的货币

此换算后的价格通过以下公式计算得出:tiered_rates.usd_amount * currency_conversion_rate = tiered_rates.account_currency_amount

按本地货币收费时,Google 会根据主要金融机构发布的汇率将所列价格转换为相应的本地货币。包括针对以非美元货币结算而收取的任何附加费。我们将使用对 pricing_as_of_time 有效的汇率。

价格层级简介

SKU 价格按价格层级提供。价格层级根据不同层级级别提供价格结构。某些 SKU 只有一个价格层级,而其他 SKU 有多个价格层级。采用多层级价格的 SKU 示例包括:

  • 具有免费用量层级的 SKU。例如:1-1000 个单位免费。1001 个以上单位按每个单位 $1 计费。
  • 在 SKU 中,如果使用量超出一个层级的单位数,则单位价格会降低。例如:1-100 个单位,每个单位价格为 $5;101-1000 个单位,每个单位价格为 $4;1001 个单位以上,每个单位价格为 $3。

有关多层级价格的一些说明:

  • 根据每日或每月 SKU 的 aggregation_interval,层级用量计数器将重置为零。

    • 每日 SKU 会在每天凌晨 12 点重置(美国和加拿大太平洋时间)(UTC-8 或 UTC-7)。
    • 每月 SKU 会在每个日历月(例如:一月、二月等)的第一天凌晨 12 点重置为零(美国和加拿大太平洋时间 [UTC-8 或 UTC-7])。
  • 层级针对每个 Cloud Billing 账号独立运作,并且不会汇总多个 Cloud Billing 账号,即使项目属于同一个组织或属于同一个法律实体也是如此。

  • 层级针对每个 SKU 独立运作:一个 SKU 的使用量只会影响该 SKU 的价格。没有任何 SKU 会影响其他 SKU 的分层价格。

  • 定价的 SKU 价格层级与合同价格的价格层级可能不完全一致。这种情况非常少见。

  • 如果一个 SKU 有多个价格层级,则每个 SKU 层级价格会在价格表中以单独的行列出。您可以使用 tiered_rates.start_usage_amount 识别具有多个价格层级的 SKU。

  • 您可以根据编写查询的方式将 SKU 价格层级以嵌套数据或非嵌套数据的形式返回。如需详细了解嵌套数据和非嵌套数据,请参阅以下示例

价格数据查询示例

本部分提供了演示如何查询导出到 BigQuery 的 Cloud Billing 价格数据的示例。

本部分提供了不同的示例,演示如何查询导出到 BigQuery 的 Cloud Billing 价格数据

价格查询示例中使用的常用值

本部分中的查询示例使用以下值:

  • 表名称project.dataset.cloud_pricing_export
  • SKU ID2DA5-55D3-E679(Cloud Run - 请求)

获取特定 SKU 的定价

此示例演示了一个查询,该查询针对指定 SKU 的每个价格层级返回 list_price

标准 SQL

SELECT sku.id,  sku.description, list_price.*
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

_PARTITIONTIME 是 BigQuery 自动生成的字段,表示数据所属的日期。您可以使用 Cloud Billing 导出作业明确生成的字段(例如 pricing_as_of_time),而不是使用 _PARTITIONTIME

以下是配置为使用 pricing_as_of_time 字段的同一查询:

SELECT sku.id,  sku.description, list_price.*
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(pricing_as_of_time) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果

id 说明 pricing_unit aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 请求 COUNT 账号 每月 1000000 0 0 0
          1000000 2000000 0.4 0.4

获取特定 SKU 的定价,并包含服务说明

本部分中的两个示例演示了针对指定 SKU 的每个价格层级返回 list_price 的查询,并且包含 SKU 说明和服务说明。

  • 示例 1 针对每行返回一个 SKU,其价格层级显示为嵌套数据。
  • 示例 2 演示了如何将数据解除嵌套,以针对每个价格层级为每个 SKU 返回一行。

示例 1:返回嵌套数据

此示例查询单个 SKU 以返回 list_price 数据。此 SKU 有多个价格层级。定价字段值以嵌套在 SKU ID 这行下方的个别行显示。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       list_price.*
FROM my-billing-admin-project.my_billing_dataset.cloud_pricing_export
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果:

sku_id sku_description service_id service_description aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 账号 每月 1000000 0 0 0
            1000000 2000000 0.4 0.4

示例 2:返回与同一表联接的未嵌套数据

此示例查询单个 SKU 以返回 list price。SKU 有多个价格层级。该查询演示了如何使用 UNNEST 运算符来展平 tiered_rates 数组,并将各个字段与相同表联接,以便每个价格层级各占一行。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果:

sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 1000000.0 0.0 0.0 0.0
2 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 1000000.0 2000000.0 0.4 0.4

使用商品类目和地理类目查询 SKU

  • 产品类目是适用于该 SKU 的产品类别列表,例如“无服务器”、“Cloud Run”或“按需虚拟机数”
  • 地理位置类目是应用于 SKU 的地理元数据,它由类型和区域值组成。

获取 SKU 的商品类目

此示例演示了一个针对指定 SKU 返回 product_taxonomy 列表的查询,其中 SKU ID = 2DA5-55D3-E679(Cloud Run - 请求)。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果:

sku_id sku_description service_id service_description product_taxonomy
1 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run GCP
        无服务器
        Cloud Run
        其他

获取特定商品类目的所有 SKU

此示例演示了一个查询,该查询返回与指定的 product_taxonomy 匹配的所有 SKU。在此查询中,我们将无服务器指定为 product taxonomy 值。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
     AND "Serverless" in UNNEST(product_taxonomy)
LIMIT 10
;

查询结果:

sku_id sku_description service_id service_description product_taxonomy
1 0160-BD7B-4C40 Cloud Tasks 网络内部地区出站流量 F3A6-D7B7-9BDA Cloud Tasks GCP
        无服务器
        Cloud Tasks
        其他
2 FE08-0A74-7AFD Cloud Tasks GOOGLE-API 出站流量 F3A6-D7B7-9BDA Cloud Tasks GCP
        无服务器
        Cloud Tasks
        其他
3 A81A-32A2-B46D 任务队列存储空间盐湖城 F17B-412E-CB64 App Engine GCP
        无服务器
        GAE
        其他
        TaskQueue

获取特定地理类目和商品类目的所有 SKU

此示例演示了一个查询,该查询返回与指定的 geo_taxonomy 地区和指定的 product_taxonomy 匹配的所有 SKU。其中 region = us-east4product_taxonomy = 按需虚拟机数

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       geo_taxonomy,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND "VMs On Demand" in UNNEST(product_taxonomy)
      AND geo_taxonomy.type = "REGIONAL"
      AND "us-east4" in UNNEST (geo_taxonomy.regions)
;

查询结果:

sku_id sku_description service_id service_description geo_taxonomy.type geo_taxonomy.regions product_taxonomy
1 9174-81EE-425B 在弗吉尼亚运行的单租户实例 RAM 的单租户附加费 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            计算
            GCE
            按需虚拟机数
            内存:每 GB
2 C3B9-E891-85ED 在弗吉尼亚州运行的单租户实例 RAM 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            计算
            GCE
            按需虚拟机数
            内存:每 GB
3 6E2A-DCD9-87ED 在弗吉尼亚运行的 N1 预定义实例 RAM 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            计算
            GCE
            按需虚拟机数
            内存:每 GB

返回具有多个价格层级的 SKU 的定价

您可以按表名称查询 BigQuery 数据。查询的 FROM 子句中使用的表名称通过以下三个值来确定:project.dataset.BQ_table_name

这些示例中使用的常用值:

  • 表名称project.dataset.cloud_pricing_export
  • SKU ID2DA5-55D3-E679(Cloud Run - 请求)

示例 1:返回嵌套数据

此示例查询单个 SKU 以返回 list_price 数据。此 SKU 有多个价格层级。定价字段值以嵌套在 SKU ID 这行下方的个别行显示。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       list_price.*
FROM my-billing-admin-project.my_billing_dataset.cloud_pricing_export
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果:

sku_id sku_description service_id service_description aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 账号 每月 1000000 0 0 0
            1000000 2000000 0.4 0.4

示例 2:返回与同一表联接的未嵌套数据

此示例查询单个 SKU 以返回 list price。SKU 有多个价格层级。该查询演示了如何使用 UNNEST 运算符来展平 tiered_rates 数组,并将各个字段与相同表联接,以便每个价格层级各占一行。

标准 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查询结果:

sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 1000000.0 0.0 0.0 0.0
2 2DA5-55D3-E679 请求 152E-C115-5142 Cloud Run 1000000.0 2000000.0 0.4 0.4

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