首页 > 解决方案 > 保持在 Google BigQuery SQL 查询配额内的通用方法

问题描述

这是我针对公共数据集运行的 SQL 查询:

SELECT
  package,
  COUNT(*) count
FROM (
  SELECT
    REGEXP_EXTRACT(line, '(.*)') package,
    id
  FROM (
    SELECT
      SPLIT(content, '\n') line,
      id
    FROM
      [bigquery-public-data:github_repos.contents]
    WHERE
      sample_path LIKE '%.bashrc' OR sample_path LIKE '%.bash_profile')
  GROUP BY
    package,
    id )
GROUP BY
  1
ORDER BY
  count DESC
LIMIT
  400;

这是错误消息:

错误:超出配额:您的项目超出了扫描的免费查询字节的配额。有关详细信息,请参阅 https://cloud.google.com/bigquery/troubleshooting-errors

bigquery-public-data:github_repos.contents对我的配额来说太大了。

bigquery-public-data:github_repos.sample_contents对于我正在分析的内容来说太小了。

有没有办法指定查询可以使用多少配额?例如,如果我有 1TB 的配额,有没有办法运行这个查询github_repos.contents(这将消耗 2.15TB),但在消耗 1TB 后停止处理?

标签: sqlgoogle-cloud-platformgoogle-bigquery

解决方案


您可以使用自定义成本控制。这可以在项目级别或用户设置。用户可以是服务帐户。让不同的服务帐户运行每个查询,您可以“指定查询可以使用多少配额”。


推荐阅读