我目前正在 C# 应用程序中处理大型表(~105M 记录)。
当使用“Order by”或“Order Each by”子句查询表时,我收到“查询执行期间超出资源”错误。
如果我删除“Order by”或“Order Each by”子句,那么我会得到响应太大而无法返回错误。
这是两个场景的示例查询(我正在使用维基百科公共表)
SELECT Id,Title,Count(*) FROM [publicdata:samples.wikipedia] 按 Id 对 EACH 进行分组,标题按 Id 排序,标题描述
SELECT Id,Title,Count(*) FROM [publicdata:samples.wikipedia] 按 Id、标题对 EACH 进行分组
这是我的问题
- Big Query 响应的最大大小是多少?
- 我们如何选择查询请求中而不是“导出方法”中的所有记录?
1. Big Query Response 的最大大小是多少?
正如上面提到的配额政策查询最大响应大小:10 GB 压缩(返回大型查询结果时无限制)
2. 如何选择查询请求中而不是“导出方法”中的所有记录?
如果您计划运行可能返回更大结果的查询,您可以设置allowLargeResults
真实地在你的作业配置.
返回大结果的查询将需要更长的时间来执行,即使结果集很小,并且会受到额外的限制:
- 您必须指定目标表。
- 您不能指定顶级 ORDER BY、TOP 或 LIMIT 子句。这样做会抵消使用allowLargeResults 的好处,因为无法再并行计算查询输出。
- 仅当与 PARTITION BY 子句结合使用时,窗口函数才能返回大型查询结果。
详细了解如何分页以获得结果here并还从BigQuery 分析书籍,从第 200 页开始的页面,其中解释了如何乔布斯::getQueryResults正在与maxResults
参数和int的阻塞模式。
Update:
查询结果大小限制 - 有时,很难知道 10 GB 的压缩内容是什么
数据手段。
当您在 BigQuery 中运行普通查询时,响应大小限制为 10 GB
的压缩数据。有时,很难知道 10 GB 的压缩内容是什么
数据手段。它被压缩了 2 倍吗? 10 倍?结果被压缩在
它们各自的列,这意味着压缩比往往非常高
好的。例如,如果您有一列是国家/地区名称,则
可能只有几个不同的值。当你只有几个不同的
值,这意味着没有很多独特的信息,并且该列
通常会压缩得很好。如果您返回加密的数据块,它们将
可能无法很好地压缩,因为它们大多是随机的。 (上面链接的书第 220 页对此进行了解释)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)