我想在插入 Bigquery 表时生成唯一 ID



我想在插入 Bigquery 表时生成唯一 ID。ROW_NUMBER((OVER(( 失败,超出资源。论坛建议使用 ROW_NUMBER((OVER(分区依据(。不幸的是,分区依据不能使用,因为它可能会为按键分区产生相同的row_numbers。请注意,我尝试插入的数据每天至少数亿。

不幸的是,分区依据不能使用,因为它可能会为按键分区产生相同的row_numbers

是的 - 你会得到不同分区的相同数字 - 所以你可以只使用复合键,就像下面简化的例子一样 - 只是为了显示方法 - 你应该能够根据你的具体情况调整它

#standardSQL
WITH `project.dataset.table` AS (
SELECT value, CAST(10*RAND() AS INT64) partitionid
FROM UNNEST(GENERATE_ARRAY(1, 100)) value
)
SELECT 
partitionid, 
value,
CONCAT(
CAST(1000 + partitionid AS STRING), 
CAST(10000 + ROW_NUMBER() OVER(PARTITION BY partitionid ORDER BY value) AS STRING)
) id
FROM `project.dataset.table`
-- ORDER BY id  

最新更新