让我首先为这个可能令人困惑的标题道歉。我的数据分析师之旅才刚刚开始。我在BIGQUERY工作与一个极端风暴数据集(表1)它具有LAT、LONG、和STATE字段。我想用状态信息数据集(TABLE2)中的一般LAT/LONG值替换纬度和经度字段中的空值还包含LAT、LONG和STATE值。在TABLE1中,每条记录都有一个唯一的EVENT_ID,有140万行。在表2中,每个STATE都是一个唯一的记录。
我试过:
Update TABLE1
SET TABLE1.BEGIN_LAT=TABLE2.latitude
From TABLE1
INNER JOIN TABLE2
ON TABLE1.STATE = TABLE2.STATE
WHERE TABLE1.BEGIN_LAT IS NULL
我得到一个错误,因为TABLE1包含多个行具有相同的状态,我试图使用它作为我的主键。我知道我做错了什么,但不知道如何做正确的方法。在BigQuery中我想做的是什么?
任何帮助都会很感激。甚至还有如何提问的建议!:)
谢谢。
我相信你在你的查询中有一些别名表1在更新和表1在From。在这种情况下,您可以向WHERE子句添加条件以匹配EVENT_ID。这样的:
UPDATE TABLE1 TABLE1_U
SET TABLE1_U.BEGIN_LAT=TABLE2.latitude
FROM TABLE1 TABLE1_F
INNER JOIN TABLE2
ON TABLE1_F.STATE = TABLE2.STATE
WHERE TABLE1_U.BEGIN_LAT IS NULL AND TABLE1_U.EVENT_ID = TABLE1_F.EVENT_ID
另外,我更喜欢做SELECT查询,而不是更新和保存查询结果到新表。