我使用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会产生奇怪的结果)。
关于如何使这项工作的任何想法?
答案 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”(暂时)。