【问题标题】:BigQuery rank() function - Resources exceededBigQuery rank() 函数 - 超出资源
【发布时间】:2018-08-31 03:35:36
【问题描述】:

我有一个有 7 列和约 850 万行的表。我正在尝试选择选中“允许大结果”的目标表。请注意,由于资源超出错误,我已经不得不将较大的查询分解为多个步骤。

SELECT 
    col1,
    col2,
    col3,
    col4,
    RANK() OVER (PARTITION BY col1 ORDER BY col4 DESC) rank
FROM
[dataset.table]

这会返回“资源超出”错误。

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    由于窗口函数的当前实现,尝试在大型数据集上运行窗口函数时会出现这些错误(在这种情况下,需要大结果标志)。

    虽然存在这些限制,但我建议分多个步骤运行查询,如下所示:

    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 替换为更大的数字)

    【讨论】:

    • 感谢您的回复。这并不理想,但解决方法现在就足够了。
    • Yuk,我想有一个解决方法总比没有好。 @Fh。是否有计划为窗口函数启用较大的结果?这篇文章差不多是九个月前的事了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多