Google BigQuery报错:连接别名join_1需指定数据集,如何解决?
解决BigQuery中"Table 'join_1' must be qualified with a dataset"错误
你遇到的问题是因为BigQuery不支持在嵌套子查询中直接引用外层的表别名(这里的join_1)。要解决这个问题,你需要把join_1定义为公共表表达式(CTE),这样整个查询上下文里都能直接引用它,不需要额外指定数据集。
修改后的SQL如下:
WITH join_1 AS ( SELECT * FROM `prod.box.records` AS records LEFT JOIN `prod.box.record_updates` as updates USING (c2) WHERE c11 = "view" ) SELECT * FROM join_1 INNER JOIN ( SELECT c1, c6, c2 FROM ( SELECT c1, IFNULL(c4,c3) AS c6, c2, c7 FROM ( SELECT c1, c2, c3, c4, c5 FROM join_1) LEFT JOIN ( SELECT c1, c2, MAX(c5) AS c5, "TRUE" AS c7 FROM join_1 GROUP BY c5, c2) USING (c2, c1, c5) GROUP BY c1, c6, c2, c7 HAVING c7 = "TRUE" ) AS status USING (c2, c1)
关键说明
- 用
WITH子句把原本的外层子查询定义为CTEjoin_1,这样它就成为当前查询的临时表,所有后续子查询都可以直接引用,无需指定数据集。 - 原SQL中嵌套子查询里引用
join_1的地方,现在都能正常识别,不会再抛出“需要数据集限定”的错误。
内容的提问来源于stack exchange,提问作者Gerry
相关产品推荐
相关产品推荐

