google-cloud-platform - 带有 'Order Each by' 子句的 Google BigQuery 大表(105M 记录)产生 "Resources Exceeds Query Execution"错误

标签 google-cloud-platform google-bigquery

当 Google Big Query 大型表(1.05 亿条记录)包含“Order Each by”子句时,我遇到了严重问题“资源超出查询执行”。

这是示例查询(使用公共(public)数据集:维基百科):

SELECT Id,Title,Count(*) FROM [publicdata:samples.wikipedia] Group EACH by Id, title Order by Id, Title Desc

如何在不添加 Limit 关键字的情况下解决此问题。

最佳答案

在大数据数据库上使用order by并不是一个普通的操作,在某些方面它超出了大数据资源的属性。您应该考虑对查询进行分片或在导出的数据中运行订单。

正如我今天在 your other question 中向您解释的那样,添加 allowLargeResults 将允许您返回大型响应,但您不能指定顶级 ORDER BY、TOP 或 LIMIT 子句。这样做会抵消使用 allowLargeResults 的好处,因为无法再并行计算查询输出。

您可以尝试的一个选项是对查询进行分片。

where ABS(HASH(Id) % 4) = 0

您可以多次使用上述参数来获得更小的结果集,然后进行组合。

另请阅读Chapter 9 - Understanding Query Execution它解释了内部分片的工作原理。

您还应该阅读Launch Checklist for BigQuery

关于google-cloud-platform - 带有 'Order Each by' 子句的 Google BigQuery 大表(105M 记录)产生 "Resources Exceeds Query Execution"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289526/

相关文章:

google-cloud-platform - 多个项目的 BigQuery 服务帐号配置

google-bigquery - BigQuery - 将查询结果导出到本地文件/Google 存储

node.js - 服务帐户是在 Node.js 中查询 google bigquery 的正确凭据吗?

google-cloud-platform - HTTPS 负载均衡器后端 URL 映射无法加载渲染页面

docker - 在Google Cloud Platform中更新Docker镜像

google-cloud-platform - 用于监视谷歌云 pubsub 中未传递消息的 REST API

google-app-engine - BigQuery 界面 - 缺少数据集

google-cloud-platform - 如何估算 Google Cloud Run 成本?

google-cloud-platform - 如何标记和标记 Google GCP 负载均衡器?

google-bigquery - xxxx@gmail.com 在项目 yyyy 中没有 bigquery.jobs.create 权限