GROUP BY中的解决资源已超出,但我需要降低成本

use*_*290 2 google-bigquery

在对具有数十亿行的表执行GROUP BY EACH时,我解决了资源超出错误.但是,解决方案成本非常高,我希望降低这些成本.

错误几乎不是由偏斜的分组键引起的,而是由分组键的基数太高(是否有固定的最大值?).

我的解决方案

SELECT key FROM
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 0 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 1 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 2 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 3 GROUP EACH BY key)
Run Code Online (Sandbox Code Playgroud)

这有效,但它多次读取我的多TB表,我相信这有点贵.有没有降低成本的解决方案?

谢谢,鲁本

N.N*_*.N. 6

它只从"表"中读取整个键列一次.