使用内部联接进行 BigQuery 更新

春子如月

是否可以基于与 BigQuery 中现有表的 JOIN 对表进行更新?

此查询中没有任何双打

SELECT profile_id, count(*) as cnt 
FROM `instagram-tags-c67d8.sample_dataset.influence` 
GROUP BY profile_id HAVING cnt > 1

它也适用于

select a.profile_id, b.username
from  `instagram-tags-c67d8.sample_dataset.influence` AS a
inner join (
  SELECT
    DISTINCT profile_id, username 
FROM `instagram-tags-c67d8.sample_dataset.profile_id_lut`) AS b 
ON a.profile_id = b.profile_id
where a.username is null

现在我只有这个问题 UPDATE/MERGE 必须为每个目标行匹配最多一个源行

UPDATE
  `instagram-tags-c67d8.sample_dataset.influence` AS a
SET
  a.username = b.username
FROM (
  SELECT
    DISTINCT profile_id, username 
FROM `instagram-tags-c67d8.sample_dataset.profile_id_lut`) AS b
WHERE
  a.username IS NULL
  AND a.profile_id = b.profile_id
专卖店

该错误似乎表明有多个记录profile_id_lutprofile_idtable中的给定匹配influence

您必须首先决定如何处理该用例。可能的选择包括:

  • 从源表中删除重复记录 profile_id_lut
  • 从可用的usernames 中选择最大值或最小值
  • 选择具有最大值或最小值的用户名 profile_id

最佳选择取决于您的功能用例,无法根据您的问题中提供的信息进行评估...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章