GROUP 上的 BigQuery 内部错误(三字母组)

BigQuery internal error on a GROUP by query (trigrams)

我用 LIMIT 100 尝试了以下查询并得到了一个 "Resources exceeded during query execution" (otichyproject1:job_1mpw4aDtTHmbduBdKSBu5ty1DXY) 所以我试图将它输出到一个新的 table 并允许大的结果。它 运行 长得多,但因 'internal error' (otichyproject1:job_6pFUlj2AzdROUyAU8nZ9dGdo3ms) 而失败。

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

table 三元组 3 来自 public 三元组数据集,应该更小(尽管三元组上的 COUNT 给出了奇怪的结果)。

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

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

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"。 "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":

尝试将所有结果输出到新 table 的查询,运行仅需​​ 20 秒
SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks 
FROM  [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade

所以这个问题的简短答案是:继续使用 "GROUP EACH"(暂时)。