在大型数据集上的 BigQuery 中排名或 ROW_NUMBER
RANK or ROW_NUMBER in BigQuery over a large dataset
我需要向 BigQuery 中的大型(约十亿行)数据集添加行号。当我尝试时:
SELECT
*
ROW_NUMBER() OVER (ORDER BY d_arf DESC) plarf
FROM [trigram.trigrams8]
我得到 "Resources exceeded during query execution.",因为 analytic/window 函数需要适合一个节点。
如何向 BigQuery 中的大型数据集添加行号?
你没有给我一个有效的查询,所以我不得不创建自己的查询,所以你需要将它转化为你自己的问题 space。另外我不确定为什么要在如此庞大的数据集中为每一行提供行号,但接受挑战:
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,并将其添加到本地分区计数中。
- 他打.
我需要向 BigQuery 中的大型(约十亿行)数据集添加行号。当我尝试时:
SELECT
*
ROW_NUMBER() OVER (ORDER BY d_arf DESC) plarf
FROM [trigram.trigrams8]
我得到 "Resources exceeded during query execution.",因为 analytic/window 函数需要适合一个节点。
如何向 BigQuery 中的大型数据集添加行号?
你没有给我一个有效的查询,所以我不得不创建自己的查询,所以你需要将它转化为你自己的问题 space。另外我不确定为什么要在如此庞大的数据集中为每一行提供行号,但接受挑战:
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,并将其添加到本地分区计数中。
- 他打.