将结算数据导出至 BigQuery

用于监测、分析和优化费用的工具已成为开发管理的重要组成部分。通过将结算数据导出到 BigQuery 的功能,您可以随时将每日使用情况和费用估算值自动导出至您指定的 BigQuery 数据集。然后,您可以通过 BigQuery 访问自己的结算数据。您也可以使用这种导出方法将数据导出到 JSON 文件。

您还可以使用常规文件导出功能将数据导出到 CSV 和 JSON 文件。但是,如果您使用常规文件导出功能,则应注意,常规文件导出功能汇总的数据集要比导出到 BigQuery 时的数据集小。如需详细了解常规文件导出功能及其汇总的数据,请参阅将结算数据导出至文件

如何启用将结算数据导出到 BigQuery 的功能

要启用将结算数据导出到 BigQuery 的功能,请执行以下操作:

  1. 访问 Google Cloud Platform Console
  2. 打开左侧菜单 (menu),然后选择结算
  3. 如果您有多个结算帐号,请选择转至关联的结算帐号以管理当前项目的结算。要查找不同的结算帐号,请选择管理结算帐号
  4. 在左侧的“结算”菜单中,点击帐单导出
  5. 选择 BigQuery 导出标签页。
  6. 点击修改设置,启用导出功能并更新导出设置。
  7. 项目列表中,选择用于存储 BigQuery 数据集的项目。如果您尚未创建 BigQuery 数据集,系统会提示您创建一个。
  8. 根据需要创建一个新数据集:

    1. BigQuery 网页界面中,点击项目名称旁边的向下箭头,然后点击新建数据集
    2. 为数据集指定数据集 ID数据位置数据有效期,然后点击确定
  9. 在 Console 中的帐单导出数据集列表中,指定要导出数据的目标数据集。如果您刚刚创建了数据集,请选择新数据集的名称。

  10. 点击保存

启用 BigQuery 导出功能后,可能需要过几个小时才能查看数据。系统会定期自动将您的结算数据导出到 BigQuery,但 BigQuery 中的更新频率会因所使用的服务而异。请注意,BigQuery 负载符合 ACID,因此,如果您在将数据加载到 BigQuery 的同时查询 BigQuery 帐单导出数据集,则不会遇到部分加载的数据。 详细了解 BigQuery 的特性

关于结算数据导出表版本:原始版本和 v1 版本

您可能会在数据集中看到多个表,具体取决于您启用“将数据导出到 BigQuery”这一功能的时间。如果您是在“将数据导出到 BigQuery”这一功能的正式版发布(2017 年 11 月中旬)之后启用了该功能,那么您将只会看到 v1 版本,并可以忽略本节的其余部分。

如果您是在“将数据导出到 BigQuery”这一功能处于测试阶段时启用了该功能,则导出的结算数据将传输到数据集中的两个不同的表。这两个表分别包含相同数据的两个不同版本:原始版本和新版本 (v1)。

对于测试版参与者,我们将在一段时间内提供这两种格式,以便您可以在向 v1 架构过渡的过程中继续分析结算数据;当新的结算数据流入时,我们会自动将其导出到这两个 BigQuery 表格中。

表名称中会体现数据版本:

  • 原始版本:gcp_billing_export_BILLING_ACCOUNT_ID
  • v1 版本:gcp_billing_export_v1_BILLING_ACCOUNT_ID

原始版本和 v1 版本之间的区别

我们对导出方案做出了几项更改。为了与 Google Cloud Platform 的其他部分保持一致,我们对某些列进行了重命名;此外,我们还增加了一些列,以包含与您的费用有关的其他实用信息。

方案更改摘要:

  • product 列重命名为 service.description
  • resource_type 列重命名为 sku.description
  • start_timeend_time 列重命名为 usage_start_timeusage_end_time
  • 增加了 service.id
  • 增加了 sku.id
  • 增加了 export_time

您可以使用 sku.id 列将各个专列项与 Google Cloud Platform 价格页面上及 Cloud Billing Catalog API 中发布的价格对应起来。使用 export_time 列可以了解结算数据的上次更新时间。

BigQuery 中的结算数据

下表介绍了导出到 BigQuery 的结算数据的内容。

字段 类型 说明
billing_account_id 字符串 与使用情况关联的结算帐号 ID。
invoice.month 字符串

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

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

cost_type 字符串

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

service.id(仅限 v1 版本) 字符串 与使用情况关联的服务的 ID。
service.description(v1 版本)
product(原始版本)
字符串 报告结算数据的 Google Cloud Platform 服务。
sku.id(仅限 v1 版本) 字符串 服务使用的资源的 ID。如需 SKU 的完整列表,请参阅 Google Cloud Platform SKU
sku.description(v1 版本)
resource_type(原始版本)
字符串 服务使用的资源类型的说明。例如,Cloud Storage 的资源类型是“Standard Storage US”。
usage_start_time(v1 版本)
start_time(原始版本)
时间戳 开始使用服务的时间的 UNIX 时间戳。如需了解详情,请参阅有关时间戳数据类型的 BigQuery 文档。另请参阅下文的导出的数据和帐单之间的区别
usage_end_time(v1 版本)
end_time(原始版本)
时间戳 结束使用服务的时间的 UNIX 时间戳。如需了解详情,请参阅有关时间戳数据类型的 BigQuery 文档。另请参阅下文的导出的数据和帐单之间的区别
project.id 字符串 生成结算数据的项目的 ID。
project.name 字符串 生成结算数据的项目的名称。
project.ancestry_numbers 字符串 项目(由指定 project.id 标识,例如 my-project-123)的资源层次结构中的祖先。

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

project.labels.key 字符串 如果存在标签,则为 key:value 对的 key 部分,包含发生了使用的项目中的标签。如需详细了解如何使用标签,请参阅使用标签
project.labels.value 字符串 如果存在标签,则为 key:value 对的 value 部分,包含发生了使用的项目中的标签。如需详细了解如何使用标签,请参阅使用标签
labels.key 字符串 如果存在标签,则为 key:value 对的 key 部分,包含发生了使用的资源中的标签。如需详细了解如何使用标签,请参阅使用标签
labels.value 字符串 如果存在标签,则为 key:value 对的 value 部分,包含发生了使用的资源中的标签。如需详细了解如何使用标签,请参阅使用标签
system_labels.key 字符串 如果存在系统标签,则为 key:value 对的 key 部分,包含发生了使用的资源中的系统生成的标签。另请参阅下面的可用的系统标签
system_labels.value 字符串 如果存在系统标签,则为 key:value 对的 value 部分,包含发生了使用的资源中的系统生成的标签。另请参阅下面的可用的系统标签
location.location 字符串 国家/地区或区域级别的使用位置;或者,global 表示资源没有特定位置。如需了解详情,另请参阅区域和地区
location.country 字符串 location.location 是国家/地区或区域时,此字段是发生了使用的国家/地区,例如 US。如需了解详情,另请参阅区域和地区
location.region 字符串 location.location 是国家/地区时,此字段是发生了使用的地区,例如 us-central1。如需了解详情,另请参阅区域和地区
location.zone 字符串 location.location 是区域时,此字段是发生了使用的区域,例如 us-central1-a。如需了解详情,另请参阅区域和地区
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 的使用量。此字段会返回 2018 年 1 月 22 日至今的数据。
usage.pricing_unit 字符串 根据 Catalog API(目前为测试版)衡量资源使用情况的单位。此字段会返回 2018 年 1 月 22 日至今的数据。
credits.name 字符串 对结算帐号应用的赠金的说明。
credits.amount 浮点数 对使用情况应用的赠金的金额。赠金金额始终为负数。
export_time(仅限 v1 版本) 时间戳 与新附加的数据关联的处理时间。每次导出新数据时,该值都会增加。
另请参阅下文的导出的数据和帐单之间的区别

标签简介

您会在 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 为单位)。

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

针对时间戳字段的查询可能涵盖尚未显示在您的帐单上、应在以后报告的使用情况,因此返回的数据可能不会直接反映到您的帐单上。

时间戳字段包括:

  • usage_start_time(v1 版本)或 start_time(原始版本)
  • usage_end_time(v1 版本)或 end_time(原始版本)
  • export_time

错误和调整

请注意,如果您的结算数据中包含错误或需要进行调整(这种情况不太可能发生),系统会在其中附加相关数据以排除类似错误。除以下列之外,所有其他列都将保持不变:

  • cost
  • credit
  • usage.amount
  • export_time

如果您需要确定哪些数据是新数据,为此,只需查询 export_time(仅限 v1 版本)即可。如果您使用的是原始版本,则可以使用类似于以下示例的查询:

SELECT partition_id, MSEC_TO_TIMESTAMP(last_modified_time)
FROM [dataset_name.table_name$__PARTITIONS_SUMMARY__]

对于上面的示例查询,您必须使用旧版 SQL,因为标准 SQL 不支持分区修饰器分隔符 ($)。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Billing 文档
需要帮助?请访问我们的支持页面