Get a free observability report to evaluate the potential savingsContact us →
费用分析3 分钟阅读

按项目分析 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:

SQL
-- 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
将 your-project 和 region-us 替换为您的 GCP 项目和数据集区域。

查询说明

查询收集所有已完成的查询作业,按 job_id 去重,按 project_id 分组,并对 total_bytes_billed 求和。还按项目计算不同作业数,以便查看哪些项目运行最多查询。按需费用公式:bytes / 1024^4 * $6.25。

关键洞察

  • lightbulb

    如果工程师运行未优化的探索性查询,暂存和开发项目有时可能比生产更昂贵。

  • lightbulb

    作业数量多但费用低的项目运行高效查询——研究它们的模式。

  • lightbulb

    作业数量少但费用高的项目有值得调查的昂贵单个查询。

  • lightbulb

    与按用户查询交叉参考,以查看哪些用户对每个项目的费用负责。

最佳实践

  1. 1

    在 GCP 计费控制台中设置每项目预算警报。

  2. 2

    使用单独的计费账户或标签对业务单位进行费用分摊。

  3. 3

    考虑使用按项目分配的预留的 BigQuery Editions,以获得可预测的费用。

  4. 4

    每月审查项目级费用,并标记任何环比增加 >20% 的项目。

想让 CloudClerk 自动找到这些节省吗?

我们的平台连接到您的 BigQuery 项目,自动运行这些分析,并提供 AI 驱动的优化建议——所有数据完全匿名。

相关指南