在BigQuery中使用通配符的UNION表



我有超过40个表,我想在BigQuery中添加使用标准SQL。我已经将它们格式化为具有完全相同的模式。当我尝试在FROM子句中的表名末尾使用'*'通配符时,我得到以下错误:

语法错误:期望输入结束,但得到"*"在[95:48]

我最终在所有表上手动执行UNION DISTINCT。这是最好的方法吗?任何帮助都会很感激。谢谢你!

CREATE TABLE capstone-320521.Trips.Divvy_Trips_All AS 
SELECT * FROM capstone-320521.Trips.Divvy_Trips_*;

--JOIN all 2020-21 trips data
CREATE TABLE capstone-320521.Trips.Divvy_Trips_Raw_2020_2021 AS 
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_04  
UNION DISTINCT 
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_05  
UNION DISTINCT 
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_06 
UNION DISTINCT 

语法错误:期望输入结束,但得到了"*">

我认为问题是在表引用周围缺少刻度。试试下面的

CREATE TABLE `capstone-320521.Trips.Divvy_Trips_All` AS 
SELECT * FROM `capstone-320521.Trips.Divvy_Trips_*`         

注意:通配符表名包含特殊字符(*),这意味着您必须将通配符表名用反打号(')字符括起来。更多信息请参见

将表名与反引号中的通配符括起来。

我不知道任何这样的UNION DISTINCT语法。如果您的目的是对3个表进行联合,并在此过程中删除任何重复的记录,那么只需使用UNION就足够了:

CREATE TABLE capstone-320521.Trips.Divvy_Trips_Raw_2020_2021 AS
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_04
UNION
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_05
UNION
SELECT * FROM capstone-320521.Trips.Divvy_Trips_2020_06;

请注意,通常将SELECT *用于联合查询是不好的做法。原因在于,两个(或多个)表之间的联合通常只有在涉及的两个查询具有类型的列时才有效。使用SELECT *会混淆实际选择的列,因此最好总是显式列出列。

相关内容

  • 没有找到相关文章

最新更新