将渠道服务数据导出至 BigQuery

本页面介绍了如何配置“渠道服务”导出以及可用于导出的架构。

您可以使用 BigQuery 将渠道服务结算数据导出到指定的 BigQuery 数据集。此数据可帮助您详细分析您的客户或渠道合作伙伴如何使用您提供的服务。

从渠道服务导出的内容包含转销商专属数据,未以其他方式包含在 Cloud Billing 导出内容中。其中包括费用、赠金和使用情况数据,以及配置的重新定价规则。这些导出操作还会将有关您客户的父级结算帐号的所有信息汇总到单个数据集中。

但是,“渠道服务”导出数据中的数据与 Cloud Billing 导出功能兼容,您可以使用查询来联接这两个数据集以进行分析。

如需了解非转销商 Cloud Billing 导出,请参阅设置 Cloud Billing 到 BigQuery 的导出

准备工作

在开始导出渠道服务结算数据之前,您必须先完成以下操作:

  • 设置一个项目来托管您的 BigQuery 数据集,确保在项目上已启用结算功能
  • 为项目启用 BigQuery Data Transfer Service API。
  • 为导出的数据创建数据集。

如果您已有用于 Cloud Billing 数据导出的项目和 BigQuery 数据集,则可以将该项目和数据集重复用于渠道服务导出。

如需详细了解如何设置项目和数据集,请参阅设置将 Cloud Billing 数据导出到 BigQuery 的功能

导出所需的权限

如要启用和配置“渠道服务”导出功能,您需要拥有以下角色:

选择项目和数据集

在 Partner Sales Console 中,选择 BigQuery 中的一个项目和数据集,以存储“渠道服务”数据。为项目启用结算功能(如果尚未启用)。

当您选择或创建 BigQuery 数据集时,可以为该数据集选择一个受支持的 BigQuery 位置。当您为每个数据源(Google Cloud 或 Google Workspace)首次启用渠道服务数据导出功能时:

  • 如果您将 BigQuery 数据集配置为使用多区域位置,则从上个月月初开始,每个选定数据源的 BigQuery Export 数据都可用。例如,如果您在 9 月 23 日启用 BigQuery Export,则您的导出将包含 8 月 1 日起的数据。

  • 如果您将 BigQuery 数据集配置为使用区域位置(除美国或欧盟的多区域位置),则从启用导出之日起及之后,每个选定数据源的 BigQuery Export 数据均可用。也就是说,对于非多区域数据集位置,BigQuery 导出数据不会追溯添加,因此您不会看到启用导出之前的 BigQuery Export 数据。

如需导出多个 Partner Sales Console 帐号的结算数据,请按以下步骤操作:

  1. 在要向其中导出数据的 BigQuery 数据集上,确保每个 Partner Sales Console 帐号的 Billing Administrator 都有权查看该数据集。
  2. 在每个 Partner Sales Console 帐号中设置结算数据导出时,请选择统一的数据集。

支持的 BigQuery 位置

多区域

下表列出了支持渠道服务 BigQuery 数据导出功能的多区域。

多区域说明 多区域名称
欧盟成员国的数据中心1 EU
美国的数据中心 US

区域

下表列出了支持渠道服务 BigQuery 数据导出功能的美洲区域。

区域说明 区域名称
爱荷华 us-central1
拉斯维加斯 us-west4
洛杉矶 us-west2
蒙特利尔 northamerica-northeast1
北弗吉尼亚 us-east4
俄勒冈 us-west1
盐湖城 us-west3
圣保罗 southamerica-east1
南卡罗来纳 us-east1

下表列出了支持渠道服务 BigQuery 数据导出功能的亚太地区区域。

区域说明 区域名称
香港 asia-east2
雅加达 asia-southeast2
孟买 asia-south1
大阪 asia-northeast2
首尔 asia-northeast3
新加坡 asia-southeast1
悉尼 australia-southeast1
台湾 asia-east1
东京 asia-northeast1

下表列出了支持渠道服务 BigQuery 数据导出功能的欧洲区域。

区域说明 区域名称
比利时 europe-west1
芬兰 europe-north1
法兰克福 europe-west3
伦敦 europe-west2
荷兰 europe-west4
华沙 europe-central2
苏黎世 europe-west6

启用导出功能

在启用数据导出功能之前,请记下您的完全限定数据集 ID,其格式为 PROJECT_ID:DATASET_NAME

如要启用“渠道服务”导出功能,请执行以下操作:

  1. 在 Partner Sales Console 中,打开结算页面
  2. 选择账单导出
  3. 重新结算数据集字段中输入完全限定的数据集 ID。
  4. 选择要为其导出数据的数据源
  5. 点击更新如果您看到更新数据集权限的提示,请点击更新

用于启用重新结算导出功能的界面

设置完成后,账单导出功能每天都会提供增量使用情况数据。在您的帐号首次运行帐单导出之前,系统才会显示导出表。该数据集包含自首次配置为保留数据以来的数据。

如要停止将重新结算费用数据导出至数据集,请点击客户重新结算页面上的停用结算数据导出。如需重新启用导出功能,请按照上述步骤指定数据集 ID。

在停用期间,可能无法提供重新结算费用数据。如果您在此期间删除了任何已导出的数据,系统将无法回填删除的记录。

所需的服务帐号权限

“渠道服务”数据导出功能使用由 Google 拥有和管理的服务帐号,该帐号有权将结算记录写入表中。该服务帐号为:

cloud-channel-billing-reporting-rebilling@system.gserviceaccount.com

此服务帐号需要预定义角色:roles/bigquery.dataEditor 才能允许导出。您可以按照启用导出功能的步骤配置权限。

高效查询数据

BigQuery 表按 export_time 分区,默认按 payer_billing_account_id 聚类。这意味着该表会划分为较小的分区,每个分区又进一步划分为较小的集群。在查询中使用分区键和集群键有助于 BigQuery 快速找到相关数据,从而显著降低查询费用。

例如,与没有分区和聚类键的查询相比,以下查询的效率更高:

SELECT
  billing_account_id
  currency,
  invoice.month,
  -- Divide by currency_conversion_rate if converting non-USD to USD.
  SUM(cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND payer_billing_account_id IN (PAYER_BILLING_ACCOUNT_IDS)
GROUP BY
  billing_account_id,
  currency,
  invoice.month
ORDER BY
  billing_account_id,
  currency,
  invoice.month;

如需详细了解分区、聚类和最佳实践,请参阅以下链接:

  1. 查询分区表
  2. 查询聚类表
  3. 优化查询计算
  4. BigQuery 中控制费用的最佳实践

查找付款人的结算账号 ID

如需查找付款人的结算帐号 ID,请打开 Partner Sales Console 的“结算帐号”页面,然后点击合作伙伴结算标签页。

您可以查看所有结算帐号以及付款人结算帐号 ID。

付款人结算账号 ID

为其他用户对导出数据集设置访问权限控制

您可以通过多种方式设置对 BigQuery Export 中数据的访问权限控制。如需了解详情,请参阅 BigQuery 访问权限控制

为确保用户只能访问其有权查看的数据,我们建议设置已获授权的视图以共享导出数据集中的数据。

为用户设置权限时,请确保服务帐号 cloud-channel-billing-reporting-rebilling@system.gserviceaccount.com 始终拥有导出数据集的完整编辑者权限,以便持续导出数据。

表架构

以下架构描述了 BigQuery 表中的数据。

在 BigQuery 数据集中,详细的重新结算导出数据将加载到名为 reseller_billing_detailed_export_v1 的数据表中。

字段 类型 说明
billing_account_id 字符串 与使用情况相关联的账号 ID,该 ID 可能是客户的账号 ID,也可能是您的账号 ID。这可能是结算帐号或 Cloud Identity ID,具体取决于产品系列。
payer_billing_account_id 字符串 您的父级结算帐号的 ID。
invoice.month 字符串 包含费用专列项的账单的年份和月份 (YYYYMM)。 例如:“202101”与 2021 年 1 月相同。
cost_type 字符串 此专列项代表的费用类型:常规费用、税费、调整项或舍入误差费用。
service.id 字符串 与使用情况关联的服务的 ID。
service.description 字符串 报告结算数据的 Google 服务。
sku.id 字符串 服务所用资源的 SKU ID。
sku.description 字符串 服务使用的资源类型的说明。例如,Cloud Storage 的类型为 Standard Storage US
usage_start_time 时间戳 所计算的费用的每小时使用时段的开始时间。所有服务的使用情况和费用按小时显示。长期运行的服务使用量跨越多个每小时时段。对于订阅产品,此字段为结算月份的开始时间。
usage_end_time 时间戳 所计算费用的每小时使用时段的结束时间。所有服务的使用情况和费用按小时显示。长期运行的服务使用量跨越多个每小时窗口。对于订阅产品,此字段为结算月份的结束时间。
project 结构体 生成 Cloud Billing 数据的 Google Cloud 项目的相关信息。
project.number 字符串 为生成 Cloud Billing 数据的 Google Cloud 项目在内部生成且经过匿名化处理的唯一标识符。
project.id 字符串 生成 Cloud Billing 数据的 Google Cloud 项目的 ID。
project.name 字符串 生成 Cloud Billing 数据的 Google Cloud 项目的名称。
project.labels 结构体,重复
project.labels.key 字符串 如果存在标签,则为键值对的 key 部分。
project.labels.value 字符串 如果存在标签,则为键值对的“值”部分。
project.ancestry_numbers 字符串 项目的资源层次结构祖先,由 project.id 标识。
labels 结构体,重复
labels.key 字符串 如果存在标签,则为键值对的 key 部分。
labels.value 字符串 如果存在标签,则为键值对的“值”部分。
system_labels 结构体,重复
system_labels.key 字符串 如果存在系统标签,则为键值对的键部分。
system_labels.value 字符串 如果存在系统标签,则为键值对的“值”部分。
location.location 字符串 国家、区域或可用区级别的使用位置。对于没有特定位置的资源,显示 global。如需了解详情,请参阅区域和可用区
location.country 字符串 location.location 是国家/地区、区域或可用区时,此字段是发生了使用的国家/地区。例如 US。如需了解详情,请参阅区域和可用区
location.region 字符串 location.location 是国家或地区时,此字段是使用量的区域。例如 us-central1。如需了解详情,请参阅区域和可用区
location.zone 字符串 location.location 是可用区时,此字段是发生了使用的可用区。例如 us-central1-a。如需了解详情,请参阅区域和可用区
resource 结构体 描述与产生服务用量的服务资源(例如虚拟机或 SSD)相关的信息的结构和值。
resource.name 字符串 生成相关用量的资源的特定于服务的标识符。可以由用户生成。
resource.global_name 字符串 生成相关用量的资源的全局唯一服务标识符。
cost 数字 抵扣任何赠金之前的使用费。如需获取包含赠金的总费用,请将 credits.amount 添加到 cost
currency 字符串 费用的结算币种。如需了解详情,请参阅结算和付款支持的本地货币
currency_conversion_rate 浮点数 美元兑本地货币的汇率。也就是说,cost ÷ currency_conversion_rate 等于以美元计算的费用。
usage.amount 数字 所用 usage.unit 的数量。
usage.unit 字符串 衡量资源使用情况的基本单位。例如,标准存储空间的基本单位是字节/秒。
usage.amount_in_pricing_unit 数字 usage.pricing_unit 的使用数量。
usage.pricing_unit 字符串 用于衡量资源使用情况的单位。
credits 结构体,重复 包含描述赠金结构和价值的字段。
credits.id 字符串 如果填充,则表示赠金与产品 SKU 相关联。
credits.full_name 字符串 与产品 SKU 关联的赠金的名称。
credits.type 字符串 此字段描述了 credits.id 的目的或来源。
credits.name 字符串 对使用量应用的赠金的说明。
credits.amount 数字 对使用量应用的赠金金额。
credits.channel_partner_amount 数字 重新结算加价和折扣后,应用于使用量的赠金金额。基于 channel_partner_name 和关联的 ChannelPartnerRepricingConfig。如果credits.type为 RESELLER_MARGIN,此金额将为零。
credits.customer_amount 数字 重新结算加价和折扣后,应用于使用量的赠金金额。基于 customer_name 和关联的 CustomerRepricingConfig。如果credits.type为 RESELLER_MARGIN,此金额将为零。
adjustmentsInfo 结构体,重复 包含描述费用专列项调整结构和值的字段。
adjustmentsInfo.adjustment_id 字符串 如果填充了此字段,则调整会与费用订单项相关联。adjustmentsInfo.adjustments_id 是某个问题导致的所有调整的唯一 ID。
adjustmentsInfo.adjustment_description 字符串 调整项及其原因的说明。
adjustmentsInfo.adjustment_type 字符串 调整的类型。
adjustmentsInfo.adjustment_mode 字符串 签发调整项的方式。
export_time 时间戳 与附加结算数据关联的处理时间。每次导出新数据时,该值都会增加。使用 export_time 列了解导出的结算数据的上次更新时间。
entitlement_name 字符串 Cloud Channel API 使用权的资源名称。使用以下格式:accounts/{account}/customers/{customer}/entitlements/{entitlement}
channel_partner_name 字符串 (仅限分销商)向最终客户销售产品的渠道合作伙伴的资源名称。使用以下格式:accounts/{account}/channelPartnerLinks/{channelPartner}
channel_partner_cost 数字 (仅限分销商)在应用现有 ChannelPartnerRepricingConfig 后,渠道合作伙伴应支付的费用,由 channel_partner_name 标识。
customer_name 字符串 消耗了此使用量的转销商客户的资源名称,格式为:accounts/{account}/customers/{customer}
customer_cost 数字 应用 CustomerRepricingConfig(如果存在)后,由 customer_name 列标识的转销商客户的费用。
cost_at_list 数字 按公开价格收费时的费用。
customer_repricing_config_name 字符串 Cloud Channel API CustomerRepricingConfig 的资源名称。使用以下格式:accounts/{account}/customers/{customer}/customerRepricingConfigs/{id}
channel_partner_repricing_config_name 字符串 (仅限分销商)Cloud Channel API ChannelPartnerRepricingConfig 的资源名称。使用以下格式:accounts/{account}/channelPartnerLinks/{channelPartner}/channelPartnerRepricingConfigs/{id}
tags 结构体 用于描述标记的字段,如键、值和命名空间。
tags.key 字符串 与此特定标记相关联的密钥的简称或显示名。
tags.value 字符串 附加到标记键的资源。在任何给定时间,对于给定键,一个资源只能附加一个值。
tags.inherited 布尔值 用于指明标记绑定是继承的(标记继承 = True)还是直接/非继承(标记继承 = False)。
tags.namespace 字符串 表示定义标记键和值的资源层次结构。命名空间可以与标记键和标记值简称结合使用,以便为标记键或标记值创建一个全局唯一的完全限定名称。
customer_correlation_id 字符串 客户的外部 CRM ID。仅当此客户拥有 CRM ID 时,才填充。
price 结构体 用于描述与用量收费价格相关的结构和值的字段。
price.effective_price 数字 按使用量收取的价格。
price.tier_start_amount 数字 SKU 价格层级的下限单位数。例如,具有三个价格层级(例如 0-100 个单元、101-1000 个单元和 1001 个以上单元)的 SKU 将为该 SKU 显示三个价格行,其中 price.tier_start_amount 字段分别为 0、101 和 1001,分别表示 SKU 价格层级的起始单位数量。 详细了解 Google Cloud 价格层级
price.unit 字符串 指定价格时所依据的用量单位(例如吉比字节、太比字节、月、年、吉比字节小时、吉比字节月或计数)。price.unit 字段中的值与 usage.pricing_unit 字段中的值匹配。
price.pricing_unit_quantity 数字 SKU 的价格层级单位数量。例如,如果层级价格为每 100 万字节 $1,则此列将显示 1000000。
transaction_type 字符串 卖家的交易类型。交易类型可能是下列之一:
  • GOOGLE = 1:Google Cloud 销售的服务。
  • THIRD_PARTY_RESELLER = 2:Google Cloud 转售的第三方服务。
  • THIRD_PARTY_AGENCY = 3:合作伙伴销售的第三方服务,Google Cloud 充当代理。
seller_name 字符串 卖家的法定名称。
subscription 结构体 用于描述基于支出或基于资源的承诺的字段。您可以使用这些字段来分析特定承诺的费用。
subscription.instance_id 字符串 与承诺关联的订阅 ID。

关于架构的其他说明

不适用于 Google Workspace 的列

如果某列或字段不适用于某个产品系列,则此产品系列导出的数据将在此列/字段中包含 null。以下列/字段不适用于 Google Workspace 导出内容:

  • project
  • labels
  • resource
  • credits
  • adjustmentsInfo
  • cost_at_list
  • customer_repricing_config_name
  • channel_partner_repricing_config_name
  • tags
  • price.effective_price
  • price.tier_start_amount
  • transaction_type
  • seller_name

关于 Google Workspace 导出功能的其他注意事项

Google Workspace 导出功能有一些特殊行为:

  • Google Workspace 数据不包含转销商自己的使用情况。
  • cost_typetaxadjustment 时,usage.amount_in_pricing_units 始终为 1。
  • 在 Google Workspace 账单中,税费显示为一个专列项。导出时,税费按客户细分。虽然总税费应与账单一致,但个别税费可能存在微小的舍入误差。

billing_account_id

  • 对于 Google Cloud,这是与用量关联的 Cloud Billing 帐号。
  • 对于 Google Workspace,这是客户的 Cloud Identity ID。

servicesku

对于 Google Workspace,这些列表示与用量关联的“产品”和“SKU”。详细了解产品和 SKU ID

usage_start_timeusage_end_time

在 Google Workspace 账单 CSV 中,这以日期表示。在导出中,这些表示为时间戳:

  • 对于 usage_start_time,这是订阅的开始时间(含此时间),即开始日期的 0:00(太平洋标准时间)。
  • 对于 usage_end_time,这是订阅的结束时间(不含此时间),即结束日期后一天的 0:00(太平洋标准时间)。

project.labels

对于 Google Cloud,这些是发生了使用的 Google Cloud 项目中的键值对。如需了解详情,请参阅使用标签

labels

对于 Google Cloud,这些是发生了使用的 Google Cloud 资源上的键值对。如需了解详情,请参阅使用标签

system_labels

  • 对于 Google Cloud,这些是发生了使用的 Google Cloud 资源上的键值对。如需了解详情,请参阅可用的系统标签

  • 对于 Google Workspace,这些是关于费用的其他元数据,包括:

    • workspace.googleapis.com/domain_name:客户的域名。
    • workspace.googleapis.com/order_id:订单 ID。
    • workspace.googleapis.com/purchase_order_id:采购订单 (PO) ID。
    • workspace.googleapis.com/subscription_id:订阅 ID。
    • workspace.googleapis.com/usage_type:使用类型。如果 cost_type 不是 regular,则不适用。

Google Workspace 使用类型包括:

  • COMMITMENT_TERM_START_ITEM:订阅开始。通常与按月结算的承诺订阅的不完整月份和预付款订阅的结算/合同期相关联。
  • COMMITMENT_TERM_END_ITEM:订阅结束。通常与按月结算的承诺订阅的上个月费用相关联。
  • COMMITMENT_TERM_RENEWAL_ITEM:后续订阅期的开始。
  • COMMITMENT_MONTHLY_ITEM:针对月初现有承诺记录的使用情况。在大多数情况下,此费用会延期一整月。
  • COMMITMENT_SEATS_CHANGE_ITEM:在承诺等级发生变化(增加或减少)时记录。对于按月付费的承诺订阅,通常从月中开始并延至月末,或直到预付款订阅的结算/合同期结束。
  • COMMITMENT_CANCEL_ITEM:在订阅被取消时记录。包含与提前终止服务相关的费用。表示合同在中途取消时针对合同期内剩余时间的费用,或针对结算周期剩余时间发放的赠金(合同中途更改或取消)。
  • FLEXIBLE_SEATS_ITEM:按一定数量的用户在一定天数的连续块中记录使用情况。目前仅适用于未做出承诺的用户。
  • COUPON_DISCOUNT_ITEM:与优惠券相关的折扣金额。
  • MIGRATED_CREDIT_ITEM:Chromebox 迁移的功劳。
  • COMMITMENT_PREPAY_BILLING_PERIOD_ITEM:表示在承诺预付款订阅的整个周期的付款周期开始时创建的使用情况信息。

usage.amount

对于按席位计算的 Google Workspace 席位,这用于表示付费席位。例如,承诺的承诺席位数或弹性方案的付费席位数。

usage.pricing_unit

credits.id

对于 Google Cloud,这可以是字母数字唯一标识符 (12-b34-c56-d78),也可以是赠金类型的说明(承诺使用折扣:CPU)。如果 credits.id 字段为空,则产品 SKU 未与赠金关联。

credits.full_name

对于 Google Cloud,这是字母数字 credits.id 的直观易懂的说明。示例包括免费试用赠金基于支出的承诺使用折扣。系统仅针对具有字母数字 credits.id 的 SKU 填充 credits.full_name 值。如果 credits.id 的值是赠金类型的说明(例如承诺使用折扣:CPU),则 credits.full_name 字段将为空。

credits.type

对于 Google Cloud,赠金类型包括:

  • COMMITTED_USAGE_DISCOUNT:为 Compute Engine 购买的基于资源的承诺使用折扣,以换取大幅度的虚拟机使用折扣。
  • COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE:为服务购买的基于支出的承诺使用合同,以换取您承诺支出最低金额的承诺。
  • DISCOUNT:折扣赠金类型用于达到合同支出阈值后获得的赠金。请注意,在 Partner Sales Console 提供的 Cloud Billing 报告中,折扣赠金类型列为基于支出的折扣(合同)
  • FREE_TIER:某些服务提供不超过指定限额的免费资源用量。对于这些服务,我们会发放赠金以实现免费层级用量。
  • PROMOTION:促销赠金类型包括 Google Cloud 免费试用和营销活动赠金,或其他 Google Cloud 使用补贴。促销赠金在可用时会被视为一种付款方式,会自动应用以减少您的总账单费用。
  • RESELLER_MARGIN:如果您是转销商,则转销商利润赠金类型表示从每个符合条件的订单项中获得的转销商计划折扣。
  • SUBSCRIPTION_BENEFIT:通过购买服务的长期订阅来换取折扣,从而获得的赠金。
  • SUSTAINED_USAGE_DISCOUNT:“持续使用折扣”赠金类型是您因在结算月份的大部分时间内运行特定 Compute Engine 资源而获得的自动折扣。

adjustmentsInfo

对于 Google Cloud,只有在为 Cloud Billing 修改生成费用专列项时,系统才会填充这些值。adjustmentsInfo 类型包含有关调整项的详细信息,无论调整项是为更正错误还是出于其他原因发出的。

adjustmentsInfo.adjustment_type

就 Google Cloud 而言,这包括:

  • USAGE_CORRECTION:更正了错误报告的使用情况。
  • PRICE_CORRECTION:因定价规则不正确而进行的更正。
  • METADATA_CORRECTION:在不更改费用的情况下更正元数据。
  • GOODWILL:出于善意向客户发放的赠金。
  • SALES_BASED_GOODWILL:按照合同规定向客户发放的善意赠金。
  • SLA_VIOLATION:由于服务等级目标 (SLO) 违规而向客户发放的赠金。
  • BALANCE_TRANSFER:用于将资金从一个付款帐号转移到另一个付款帐号的调整项。
  • ACCOUNT_CLOSURE:使已关闭帐号的余额变为零的调整。
  • GENERAL_ADJUSTMENT:常规结算帐号修改。

adjustmentsInfo.adjustment_mode

就 Google Cloud 而言,这包括:

  • PARTIAL_CORRECTION:更正操作会部分取消原始使用量和费用。
  • COMPLETE_NEGATION_WITH_REMONETIZATION:更正操作会完全取消原始用量和费用,并向更正后的订单项发出更新后的用量和费用。
  • COMPLETE_NEGATION:更正会完全取消原始用量和费用,并且不再重新创收。
  • MANUAL_ADJUSTMENT:系统会将调整项手动分配给费用和用量。

price.effective_price

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