我目前正在使用C#应用程序中的大表(~105M记录)。
使用“Order by”或“Order Each by”子句查询表时,我收到“查询执行期间超出资源”错误。
如果我删除'Order by'或'Order Each by'子句,那么我的响应太大而无法返回错误。
以下是两个场景的示例查询(我使用的是Wikipedia公共表)
SELECT Id,Title,Count(*)FROM [publicdata:samples.wikipedia] EACH by Id,title order by Id,Title Desc
SELECT Id,Title,Count(*)FROM [publicdata:samples.wikipedia] EACH by Id,title
以下是我的问题
答案 0 :(得分:2)
<强> 1。 Big Query Response的最大大小是多少?
正如Quota-policy上提到的那样,查询最大响应大小:128 MB压缩(返回大型查询结果时无限制)
<强> 2。我们如何选择查询请求中的所有记录而不是“导出方法&#39;
如果您计划运行可能会返回较大结果的查询,则可以在job configuration中将allowLargeResults
设置为true。
返回大结果的查询将花费更长的时间来执行,即使结果集很小,并且受additional limitations的限制:
详细了解如何分页以获取结果here,还可以阅读BigQuery Analytics book(从第200页开始的页面),其中说明Jobs::getQueryResults如何协同工作使用maxResults
参数和int的阻止模式。
<强>更新强>
查询结果大小限制 - 有时,很难知道128 MB的压缩内容 数据意味着。
在BigQuery中运行普通查询时,响应大小限制为128 MB 压缩数据。有时,很难知道128 MB的压缩 数据意味着它被压缩2倍? 10倍?结果在内压缩 它们各自的列,这意味着压缩比趋于非常大 好。例如,如果您有一个列是国家/地区的名称,那么就在那里 可能只有几个不同的价值观。当你只有几个不同的 值,这意味着没有很多独特的信息和列 通常压缩得很好。如果你返回加密的数据blob,他们会 可能不会很好地压缩,因为它们大多是随机的。 (这在第220页上面链接的书中有解释)