【问题标题】:Generic way to stay within Google BigQuery SQL Query quota保持在 Google BigQuery SQL 查询配额内的通用方法
【发布时间】:2018-08-30 23:56:36
【问题描述】:

这是我针对公共数据集运行的 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 后停止处理?

【问题讨论】:

  • 这是不可能的 AFAIK。对于免费套餐来说,桌子太大了。
  • @GrahamPolley 在 WHERE 子句中匹配更少的文件会减少消耗的配额吗?对此数据集的任何查询会消耗 2.15TB 吗?
  • 不,因为它既没有分区也没有集群。
  • @GrahamPolley 好的,所以针对此数据集的任何可能查询都是 2.15TB?
  • 否,取决于您在查询中访问的列。但是因为这个表主要是由“内容”列组成的,所以任何访问它的查询都会很大。

标签: sql google-cloud-platform google-bigquery


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多