带有内部连接的 BigQuery 更新
BigQuery Update with Inner join
是否可以基于与 BigQuery 中现有 table 的 JOIN 对 table 进行更新?
此查询中没有任何双打
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_lut
中有多个记录与 table influence
中给定的 profile_id
匹配。
您必须首先决定要如何处理该用例。可能的选项包括:
- 从源中删除重复记录 table
profile_id_lut
- 从可用的
username
s 中选择最大值或最小值
- 选择具有最大值或最小值的用户名
profile_id
最佳选择取决于您的功能用例,无法根据您问题中提供的信息进行评估...
是否可以基于与 BigQuery 中现有 table 的 JOIN 对 table 进行更新?
此查询中没有任何双打
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_lut
中有多个记录与 table influence
中给定的 profile_id
匹配。
您必须首先决定要如何处理该用例。可能的选项包括:
- 从源中删除重复记录 table
profile_id_lut
- 从可用的
username
s 中选择最大值或最小值
- 选择具有最大值或最小值的用户名
profile_id
最佳选择取决于您的功能用例,无法根据您问题中提供的信息进行评估...