You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Job ID在BigQuery中计算并获取作业成本?

获取BigQuery作业的精准成本(按Job ID)

核心思路:直接利用INFORMATION_SCHEMA.JOBS_BY_PROJECT计算

账单导出表(billing.gcp_billing_export_v1_XXXXX)的粒度是账单级聚合,无法直接关联单个Job ID,而JOBS_BY_PROJECT表包含每个作业的核心计费字段,是按Job ID计算成本的最优数据源。


1. 按需计费模式(On-Demand)

BigQuery按需计费以**扫描的字节数(total_bytes_billed)**为依据,按TB计价(1TB = 1024^4 字节)。

计算SQL示例

SELECT
  job_id,
  project_id,
  job_type,
  end_time,
  total_bytes_billed,
  -- 转换为TB单位,乘以当前按需单价(示例为$5/TB,需根据实际定价调整)
  ROUND((total_bytes_billed / POWER(1024, 4)) * 5, 4) AS on_demand_cost_usd,
  -- 可选:减去每月10GB免费额度(按作业分摊)
  ROUND(GREATEST((total_bytes_billed / POWER(1024, 4)) * 5 - (10 / 1024), 0), 4) AS on_demand_cost_after_free_tier_usd
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  -- 过滤出计费的作业类型(仅QUERY作业按需计费)
  job_type = 'QUERY'
  -- 按需调整时间范围
  AND end_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
ORDER BY
  on_demand_cost_usd DESC;

2. 平坦费率模式(Flat Rate)

平坦费率按**插槽使用时长(slot_millis)**计费,单位为毫秒,需转换为小时后乘以单插槽小时单价。

计算SQL示例

SELECT
  job_id,
  project_id,
  job_type,
  end_time,
  slot_millis,
  -- 转换为小时单位,乘以当前单插槽小时单价(示例为$0.046/小时,需根据实际定价调整)
  ROUND((slot_millis / 3600000) * 0.046, 4) AS flat_rate_cost_usd
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  -- 平坦费率下所有使用插槽的作业均计费(可按需过滤类型)
  slot_millis > 0
  AND end_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
ORDER BY
  flat_rate_cost_usd DESC;

关键注意事项

  • 字段优先级:按需计费必须用total_bytes_billed,而非total_bytes_processed——BigQuery按扫描的全量数据计费,即使你只用到部分结果。
  • 免费额度:每月10GB的免费处理量仅适用于按需计费,需在计算中手动扣除(分摊到各作业)。
  • 作业类型过滤:加载(LOAD)、导出(EXPORT)等作业通常不计费,需通过job_type字段过滤。
  • 定价变动:GCP定价可能调整,建议将单价维护在一个配置表中,避免硬编码。

关于账单表关联的说明

由于账单表是聚合粒度(按天/账单周期汇总),无法直接通过Job ID关联,但可以用以下方式验证计算准确性:

  1. 从JOBS_BY_PROJECT按天汇总总费用
  2. 从账单表提取对应日期的BigQuery总费用
  3. 对比两者偏差(通常在1%以内,因账单包含少量额外费用如存储)

内容的提问来源于stack exchange,提问作者Alan Mil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:15:34