查询的GROUP上的BigQuery内部错误(三元组)

时间:2015-10-11 23:17:00

标签: group-by aggregate-functions google-bigquery

我使用LIMIT 100尝试了以下查询并获得了“查询执行期间超出资源”(otichyproject1:job_1mpw4aDtTHmbduBdKSBu5ty1DXY),因此我尝试将其输出到新表中并允许大量结果。它的运行时间更长,但因“内部错误”而失败(otichyproject1:job_6pFUlj2AzdROUyAU8nZ9dGdo3ms)。

SELECT 
 ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks 
FROM 
 trigram.trigrams3 
GROUP BY 
 ngram, decade

表trigrams3派生自公共trigram数据集,应该更小(尽管三元组上的COUNT会产生奇怪的结果)。

关于如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

首先,让我们看看结果集有多大:

SELECT COUNT(*)
FROM (
SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks 
FROM  [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade
)

837,369,607 - 几乎十亿个寄存器输出,这就是我们需要“allowLargeResults”的原因。

请注意,我使用了“GROUP EACH”。不应该“需要”,因为它正在逐渐消失,但它改善了我在这里的运行时间。

与LIMIT 100相同,它适用于“EACH”:

SELECT 
 ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks 
FROM 
 trigram.trigrams3 
GROUP EACH BY 
 ngram, decade
LIMIT 100

如果我尝试使用“EACH”和“AllowLargeResults”,那么将所有结果输出到新表的查询只运行20秒:

SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks 
FROM  [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade

所以对这个问题的简短回答是:继续使用“GROUP EACH”(暂时)。