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

按频率排名的 BigQuery 热门查询

重复查询是 BigQuery 中隐藏的费用乘数。此查询对相同的查询文本进行分组,并计算每个查询执行了多少次,以及所有这些执行的累计费用。

为什么重要

每次执行费用 0.10 美元但每月运行 10,000 次的查询费用为 1,000 美元。频率分析通常会揭示低费用查询,由于纯粹的重复性而累积成显著的支出。这些都是缓存、计划物化或 BI Engine 加速的主要候选者。

工作原理

查询对每个唯一查询文本进行分组,然后按组计算出现次数和 total_bytes_billed 之和。结果显示每个唯一查询及其执行次数和累计按需费用。

SQL 查询

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

SQL
-- Find the most frequently repeated queries and their cumulative cost

DECLARE lookback_days INT64 DEFAULT 14;

WITH jobs AS (
  SELECT
    query,
    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 query, bytes_billed FROM jobs WHERE rn = 1
),
grouped AS (
  SELECT
    query,
    COUNT(*) AS exec_count,
    SUM(bytes_billed) AS total_bytes
  FROM deduplicated
  GROUP BY query
)
SELECT
  query,
  exec_count,
  ROUND(total_bytes / POW(1024, 3), 2) AS total_gib_scanned,
  ROUND(total_bytes / POW(1024, 4) * 6.25, 2) AS cumulative_cost_usd
FROM grouped
...
将 your-project 和 region-us 替换为您的 GCP 项目和数据集区域。

查询说明

作业首先按 job_id 去重,然后按查询文本分组。计数给出执行频率,计费字节数之和给出累计费用。这种方法有效地显示了大规模重复运行的查询。

关键洞察

  • lightbulb

    每天运行 >100 次的查询几乎肯定是自动化的——检查它们是否可以使用缓存结果。

  • lightbulb

    BigQuery 默认缓存结果 24 小时,但仅适用于具有确定性结果的相同查询。

  • lightbulb

    带有 CURRENT_TIMESTAMP() 或 NOW() 的查询会绕过缓存——考虑使用日期截断代替。

  • lightbulb

    扫描相同表的高频查询可能受益于物化视图或 BI Engine。

最佳实践

  1. 1

    启用 BigQuery 结果缓存,避免使其失效的模式(CURRENT_TIMESTAMP、RAND 等)。

  2. 2

    为前 5 个最常执行的分析查询创建物化视图。

  3. 3

    将来自不同仪表板或服务的重复查询整合到单个计划查询中。

  4. 4

    对为交互式仪表板提供服务的亚秒级查询使用 BI Engine。

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

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

相关指南