保持在 Google BigQuery SQL 查询配额内的通用方法
Posted
技术标签:
【中文标题】保持在 Google BigQuery SQL 查询配额内的通用方法【英文标题】:Generic way to stay within Google BigQuery SQL Query quota 【发布时间】: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? 否,取决于您在查询中访问的列。但是因为这个表主要是由“内容”列组成的,所以任何访问它的查询都会很大。 【参考方案1】:您可以使用Custom Cost Controls。这可以在项目级别或用户设置。用户可以是服务帐户。让不同的服务帐户运行每个查询,您可以“指定查询可以使用多少配额”。
【讨论】:
以上是关于保持在 Google BigQuery SQL 查询配额内的通用方法的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 中用于 Google Analytics 数据的标准 SQL 还是旧版 SQL?
Google BigQuery 中的 TIMESTAMP 和标准 SQL
Google Analytics 到 Bigquery 数据 - 自定义维度的 SQL 代码是啥?