首页 > 解决方案 > BigQuery 中分析函数的可扩展性问题是否有解决方案?

问题描述

BigQuery 中的分析函数可扩展性

我们的团队在过渡到 BigQuery 时遇到的一个相当大的挫折是分析功能的可扩展性问题。我在这里阅读了许多回复,他们要么说它不能完成,因为排序必须在单个插槽 [ 1 ][ 2 ][ 3 ]、到PARTITION[ 1 ][ 2 ][ 3 ] 或LIMIT[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ]。

对我们来说,问题是我们需要能够在没有分区和没有限制的情况下做到这一点。我们非常希望不必导出我们的数据,在不同的程序中执行分析功能,然后每次将数据上传回 BigQuery。

问题:

示例:
表大小:3.76 GB
两列:UNIQUE_ID& SALES
1.4 亿行

    SELECT 
        UNIQUE_ID
        , SALES
        , NTILE(10) OVER (ORDER BY SALES ASC) AS SALES_DECILE
    FROM `project.dataset.table`

错误: Resources exceeded during query execution: The query could not be executed in the allotted memory. OVER() operator used too much memory.

就我的目的而言,每个十分位数中没有恰好 10% 的记录是可以APPROX_QUANTILES()的,诀窍也是如此,但我不确定其他团队是否可以。当涉及需要精确数量的其他分析功能时,问题仍然存在。例如,我需要ROW_NUMBER() OVER()一个 1.4 亿行表中的每条记录都具有一个不是数字的唯一 ID 属性,所以我根本做不到PARTITION。否则,我完全会做这个建议

标签: google-bigquerygoogle-cloud-datalab

解决方案


推荐阅读