BigQuery两种用量统计差异咨询:计费依据及免费额度参考
BigQuery用量统计差异:控制台vs INFORMATION_SCHEMA查询
问题描述
我在统计BigQuery用量时发现两个渠道的数值差异极大:
- Google Cloud控制台「Quotas & System Limits」页面显示近30天处理约125GB
- 查询
INFORMATION_SCHEMA.JOBS_BY_PROJECT仅显示同期处理约20GB
想请教三个问题:
- 哪一数值用于计费?
- 为何两者差异巨大?
- 在1TB免费额度内应参考哪一数值?
附使用的查询语句:
SELECT DATE_TRUNC(DATE(creation_time), MONTH) as month, ROUND(SUM(total_bytes_processed)/POW(2,30), 2) AS gigabytes_processed FROM `region-asia-east1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY month ORDER BY month DESC;
解答
1. 哪一数值用于计费?
计费以Google Cloud控制台「账单」页面的BigQuery数据处理量为准,「Quotas & System Limits」页面的统计口径和计费逻辑对齐,可作为参考;而INFORMATION_SCHEMA.JOBS_BY_PROJECT的查询结果存在局限性,不能直接作为计费依据。
2. 为何两者差异巨大?
差异主要来自以下几个方面:
- 区域范围限制:你只查询了
region-asia-east1区域的任务数据,但如果项目内有其他区域的BigQuery操作(比如跨区域查询、其他地域的加载/导出任务),这部分数据不会被当前查询统计到,而控制台统计的是全项目所有区域的总处理量。 - 任务类型遗漏:
INFORMATION_SCHEMA.JOBS_BY_PROJECT仅统计用户发起的查询任务,但BigQuery的其他操作(如数据加载/导出、ML模型训练、存储过程执行、物化视图刷新等)产生的字节处理量会被控制台计入统计,但不会出现在这个视图中。 - 权限过滤:如果执行查询的账号没有项目级的BigJob查看权限,
JOBS_BY_PROJECT只会返回该账号有权限访问的任务,导致统计数据不全;而控制台的统计是基于项目全量任务数据的。 - 缓存任务排除:控制台会自动排除不计费的缓存查询处理量,若你的查询未过滤
cache_hit = TRUE的记录,可能会混入不计费的任务数据,但这通常是次要影响因素。
3. 在1TB免费额度内应参考哪一数值?
优先参考Google Cloud控制台「账单」页面的「BigQuery 数据处理」条目,或者「Quotas & System Limits」页面的统计数据——这两个渠道的数值和免费额度的消耗计算逻辑完全对齐。
如果想用INFORMATION_SCHEMA查询做参考,需要调整查询逻辑:
- 若项目涉及多区域,需查询所有区域的
JOBS_BY_PROJECT视图并合并结果 - 添加过滤条件
cache_hit = FALSE排除不计费的缓存查询 - 注意该视图仍会遗漏非查询类任务的处理量,无法完全替代控制台统计
内容的提问来源于stack exchange,提问作者Angry birds
相关产品推荐
相关产品推荐

