GCP AI Notebooks中BigQuery跨数据集统计更新表列报错如何解决
BigQuery UPDATE语句运行报错解决方案
报错原因说明
- 第一个报错
400 Alias t in the FROM clause was already defined as the UPDATE target at [6:5]:UPDATE语句已经为目标表project-id.dataset1.table1声明了别名t,末尾冗余的FROM子句重复定义了同名别名,属于语法错误,删除该冗余FROM子句的操作是正确的。 - 第二个报错
400 UPDATE must have a WHERE clause at [1:1]:这是BigQuery的安全限制,为了避免用户误执行全表更新操作,所有没有加WHERE条件的UPDATE语句都不会被允许执行,需要显式声明条件确认你需要更新全表。
修正后可运行的SQL代码
%%bigquery UPDATE `project-id.dataset1.table1` t SET var1 = ( SELECT COUNT(DISTINCT var2) FROM `project-id.dataset2.other_table` t2 WHERE t2.id = t.id ) -- 显式声明全表更新,符合BigQuery语法要求 WHERE TRUE;
可选优化
如果你只需要更新目标表中在other_table里有对应id匹配的行,避免无匹配的行var1被置为NULL,可以将WHERE条件替换为:
WHERE EXISTS ( SELECT 1 FROM `project-id.dataset2.other_table` t2 WHERE t2.id = t.id )
内容的提问来源于stack exchange,提问作者sbecon
相关产品推荐
相关产品推荐

