Google bigquery 我想在插入Bigquery表时生成唯一的ID。

Google bigquery 我想在插入Bigquery表时生成唯一的ID。,google-bigquery,Google Bigquery,我想在插入Bigquery表时生成唯一的ID。()上的行数()失败,超出了资源。论坛建议使用ROW_NUMBER()覆盖(按分区)。不幸的是,不能使用partition by,因为它可能会为partition by key生成相同的行号。请注意,我试图插入的数据每天至少有数亿 不幸的是,不能使用partition by,因为它可能会为partition by key生成相同的行号 是的-不同的分区会得到相同的数字-所以您可以使用复合键,如下面的非常简化的示例中所示-只是为了展示方法-您应该能够根

我想在插入Bigquery表时生成唯一的ID。()上的行数()失败,超出了资源。论坛建议使用ROW_NUMBER()覆盖(按分区)。不幸的是,不能使用partition by,因为它可能会为partition by key生成相同的行号。请注意,我试图插入的数据每天至少有数亿

不幸的是,不能使用partition by,因为它可能会为partition by key生成相同的行号

是的-不同的分区会得到相同的数字-所以您可以使用复合键,如下面的非常简化的示例中所示-只是为了展示方法-您应该能够根据具体情况调整它

#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  

插入Sampledata.yelp\u review\u out\um(review\u id,review\u stars,review\u date,business\u id,name,user\u id,user\u name,AcceptsInsurance)选择row\u number()over()作为review\u id,t1.stars作为review\u stars,t1.review\u date,t2.business\u id,t2.name,t3.user\u id,t3.name作为user\u name,t4.AcceptsInsurance FROM Sampledata.yelp_review_medium作为t1加入Sampledata.yelp_business作为t2在t2上。business_id=t1.business_id加入Sampledata.yelp_用户作为t3上的t3。user_id=t1.user_id LEFT加入Sampledata.yelp_business_属性作为t4上的t4。business_id=t1.business_id感谢您的回复。上面的insert语句必须每天运行,并且上面insert中的review_id必须是表中唯一的整数。您建议的方法在这种情况下有效吗?如果是,你能解释一下吗?谢谢,你的利率很低。重要提示-您可以使用投递答案左侧投票下方的勾号
标记接受答案
。看看为什么它很重要!对答案进行投票也很重要。投票选出有帮助的答案。。。当有人回答你的问题时,你可以检查一下该做什么。遵循这些简单的规则,你可以提高自己的声望得分,同时让我们有动力来回答你的问题:O)请考虑!