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

按查询分析 BigQuery 费用

此查询为您提供项目中每次查询执行的逐行视图,包括按需费用、槽位使用情况和计费持续时间。这是可用的最细粒度费用分析查询——非常适合深入研究单个昂贵查询。

为什么重要

聚合费用视图(按用户、按标签)从高层次告诉您钱去了哪里,但要真正解决问题,您需要查看单个查询。这种按查询的分解让您能够识别消耗最多资源的确切 SQL 语句,并优先考虑具有最高 ROI 的优化。

工作原理

查询从 INFORMATION_SCHEMA.JOBS_BY_PROJECT 读取,并为每次查询执行计算几个费用指标:估算槽位数、按需费用(基于计费字节数)、计费槽位小时数(用于 Editions 比较)和执行次数。它还应用 BigQuery 的最低计费规则——每次查询最少 10 MiB,Editions 最少 1 分钟持续时间。

SQL 查询

Fill in your details to get a ready-to-run query:

SQL
-- Per-query cost breakdown with slot and duration metrics

DECLARE lookback_days INT64 DEFAULT 7;

WITH base_jobs AS (
  SELECT
    project_id,
    query,
    start_time,
    end_time,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    total_slot_ms,
    TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS duration_ms,
    ROUND(SAFE_DIVIDE(total_slot_ms,
      TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 2) AS avg_slots
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
with_billing AS (
  SELECT *,
    CEIL(avg_slots / 100) * 100 AS billed_slots,
    GREATEST(duration_ms, 60000) / 3.6e6 AS billed_hours,
    GREATEST(bytes_billed, 10 * POW(1024, 2)) AS billed_bytes
  FROM base_jobs
),
freq AS (
  SELECT query, COUNT(*) AS exec_count FROM base_jobs GROUP BY query
)
SELECT
...
将 your-project 和 region-us 替换为您的 GCP 项目和数据集区域。

查询说明

查询通过将 total_slot_ms 除以执行时间来计算估算槽位数。应用 BigQuery 的最低计费规则:最少 10 MiB 字节和 1 分钟最低持续时间。槽位数向上取整到最近的 100(与自动扩展器增量匹配)。按需费用按 $6.25/TiB 计算,槽位小时数用于 Editions 费用比较。

关键洞察

  • lightbulb

    按需费用高但槽位少的查询扫描了太多数据——它们需要分区过滤器或列修剪。

  • lightbulb

    槽位小时多但计费字节少的查询在计算上昂贵——寻找复杂的 JOIN、DISTINCT 或窗口函数。

  • lightbulb

    执行次数多的查询是结果缓存或物化视图的候选者。

  • lightbulb

    比较 on_demand_cost_usd 与 slot_hours,以确定哪种计费模式对每次查询更便宜。

最佳实践

  1. 1

    将优化工作集中在费用最高的前 10 个查询上——它们通常占总支出的 60-80%。

  2. 2

    对于频繁执行的查询,考虑物化结果或使用 BI Engine。

  3. 3

    使用 EXPLAIN 了解优化前后的查询执行计划。

  4. 4

    对超过费用阈值的查询设置自动警报。

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

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

相关指南