按项目分析 BigQuery 费用
当您的组织在多个 GCP 项目中运行 BigQuery 时,了解哪个项目驱动最多费用对于预算分配和费用分摊至关重要。此查询使用 INFORMATION_SCHEMA 提供项目级费用归因。
为什么重要
多项目环境在成熟的 GCP 设置中是常态——生产、暂存、分析和数据科学各有独立项目。没有项目级费用可见性,团队就无法执行准确的费用分摊、设置有意义的预算或确定哪个项目首先需要优化关注。
工作原理
此查询从 INFORMATION_SCHEMA.JOBS_BY_PROJECT 读取,并按 project_id 分组费用。每个项目的总按需费用根据 $6.25/TiB 的计费字节数计算。
SQL 查询
Fill in your details to get a ready-to-run query:
-- Aggregate on-demand cost per GCP project
DECLARE lookback_days INT64 DEFAULT 30;
WITH jobs AS (
SELECT
project_id,
job_id,
COALESCE(total_bytes_billed, 0) AS bytes_billed,
ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY end_time DESC) AS rn
FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
AND job_type = 'QUERY' AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
deduplicated AS (
SELECT project_id, job_id, bytes_billed FROM jobs WHERE rn = 1
)
SELECT
project_id,
COUNT(DISTINCT job_id) AS total_jobs,
ROUND(SUM(bytes_billed) / POW(1024, 3), 2) AS gib_scanned,
ROUND(SUM(bytes_billed) / POW(1024, 4) * 6.25, 2) AS estimated_cost_usd
FROM deduplicated
GROUP BY project_id
ORDER BY estimated_cost_usd DESC查询说明
查询收集所有已完成的查询作业,按 job_id 去重,按 project_id 分组,并对 total_bytes_billed 求和。还按项目计算不同作业数,以便查看哪些项目运行最多查询。按需费用公式:bytes / 1024^4 * $6.25。
关键洞察
如果工程师运行未优化的探索性查询,暂存和开发项目有时可能比生产更昂贵。
作业数量多但费用低的项目运行高效查询——研究它们的模式。
作业数量少但费用高的项目有值得调查的昂贵单个查询。
与按用户查询交叉参考,以查看哪些用户对每个项目的费用负责。
最佳实践
- 1
在 GCP 计费控制台中设置每项目预算警报。
- 2
使用单独的计费账户或标签对业务单位进行费用分摊。
- 3
考虑使用按项目分配的预留的 BigQuery Editions,以获得可预测的费用。
- 4
每月审查项目级费用,并标记任何环比增加 >20% 的项目。
相关指南
按用户分析 BigQuery 费用
找出哪些用户产生了最多的 BigQuery 支出。查询 INFORMATION_SCHEMA,按按需费用对用户排名并识别优化目标。
阅读指南按标签分析 BigQuery 费用
按作业标签分解 BigQuery 费用。使用作业上的键值对将支出归因于团队、管道或功能。
阅读指南按查询分析 BigQuery 费用
分析每个查询的费用、槽位使用情况和执行时间。获取每次查询执行的按需费用详细分解。
阅读指南按费用排名的 BigQuery 热门查询
按按需费用找出最昂贵的 BigQuery 查询。按总计费字节数对查询排名,识别项目中最大的费用驱动因素。
阅读指南