我有一张有 7 列和约 850 万行的表。我正在尝试选择选中“允许大结果”的目标表。注意由于资源超出错误,我已经不得不将更大的查询分解为多个步骤。
SELECT
col1,
col2,
col3,
col4,
RANK() OVER (PARTITION BY col1 ORDER BY col4 DESC) rank
FROM
[dataset.table]
这将返回“超出资源”错误。
我有一张有 7 列和约 850 万行的表。我正在尝试选择选中“允许大结果”的目标表。注意由于资源超出错误,我已经不得不将更大的查询分解为多个步骤。
SELECT
col1,
col2,
col3,
col4,
RANK() OVER (PARTITION BY col1 ORDER BY col4 DESC) rank
FROM
[dataset.table]
这将返回“超出资源”错误。
由于窗口函数的当前实现,当尝试在大数据集上运行窗口函数时,这些错误是预期的(在这种情况下,这需要大结果标志)。
虽然存在这些限制,但我建议分多个步骤运行查询,如下所示:
SELECT col1, col2, col3, col4, RANK() OVER (PARTITION BY col1 ORDER BY col4 DESC) rank FROM [dataset.table]
WHERE ABS(HASH(col1)) % 4 = 0
(将 0 替换为 1、2 和 3 以完成整个过程 - 如果仍然超出资源,则将 4 替换为更大的数字)