gpt4 book ai didi

google-bigquery - BigQuery 中针对大型数据集的 RANK 或 ROW_NUMBER

转载 作者:行者123 更新时间:2023-12-03 17:36:51 27 4
gpt4 key购买 nike

我需要将行号添加到 BigQuery 中的大型(约十亿行)数据集。当我尝试:

SELECT 
*
ROW_NUMBER() OVER (ORDER BY d_arf DESC) plarf
FROM [trigram.trigrams8]

我得到“查询执行期间资源超出。”,因为分析/窗口函数需要适合一个节点。

如何向 BigQuery 中的大型数据集添加行号?

最佳答案

你没有给我一个有效的查询,所以我必须创建我自己的,所以你需要将它转换到你自己的问题空间。另外,我不确定为什么要为如此庞大的数据集中的每一行指定一个行号,但接受了挑战:

SELECT a.enc, plarf, plarf+COALESCE(INTEGER(sumc), (0)) row_num
FROM (
SELECT STRING(year)+STRING(month)+STRING(mother_age)+state enc,
ROW_NUMBER() OVER (PARTITION BY year ORDER BY enc) plarf,
year
FROM [publicdata:samples.natality] ) a
LEFT JOIN (
SELECT COUNT(*) c, year+1 year, SUM(c) OVER(ORDER BY year) sumc
FROM [publicdata:samples.natality]
GROUP BY year
) b
ON a.year=b.year
  • 我想做一个 ROW_NUMBER() OVER(),但我不能,因为元素太多。
  • 使用 OVER(PARTITION) 修复了这个问题,但现在每个分区都以 1 开头。
  • 不过没关系。在另一个子查询中,我将计算每个分区中有多少元素。
  • 周围的查询将获取每个分区的 row_number,并将其添加到本地到分区计数中。
  • 达。
  • 关于google-bigquery - BigQuery 中针对大型数据集的 RANK 或 ROW_NUMBER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247703/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com