Sql bigquery合并来自不同表的相同列
我在BigQuery中有两个表,我想将它们的列合并在一起,并对数据进行堆栈,得到一个包含所有数据的大表。实际上,这些表包含相同的数据,但很少有列具有不同的名称,而很少有列具有相同的名称 以下是数据如何存在于这些表中的示例: 表1:Sql bigquery合并来自不同表的相同列,sql,google-bigquery,Sql,Google Bigquery,我在BigQuery中有两个表,我想将它们的列合并在一起,并对数据进行堆栈,得到一个包含所有数据的大表。实际上,这些表包含相同的数据,但很少有列具有不同的名称,而很少有列具有相同的名称 以下是数据如何存在于这些表中的示例: 表1: Date | BU | Campaign | Impressions | Clicks 01/01/15 | XYZ | C1 | 500 | 20 表2: Date | BU | Campaign | Total
Date | BU | Campaign | Impressions | Clicks
01/01/15 | XYZ | C1 | 500 | 20
表2:
Date | BU | Campaign | Total_Impressions | Total_Clicks
01/01/16 | ABC | C2 | 600 | 30
预期产出:
表3:
Date | BU | Campaign | Impressions | Clicks
01/01/15 | XYZ | C1 | 500 | 20
01/01/16 | ABC | C2 | 600 | 30
如何在BigQuery中执行此操作?您正在寻找的是
联合所有人
:
select bu, campaign, impressions, clicks
from table1
union all
select bu, campaign, total_impressions, total_clicks
from table2;
默认情况下,BigQuery仍然使用自己的遗留SQL方言。在那里,可以用逗号合并多个表 要使其工作,每个表中的列首先需要获得相同的名称 因此,查询变成:
SELECT *
FROM
(select bu, campaign, impressions, clicks from table1),
(select bu, campaign, total_impressions AS impressions, total_clicks AS clicks from table2)
当使用新的标准SQL而不是传统方言时,可以使用
union-all
语句 谢谢Gordon,因为两个表中的名称不同,即impressions和total_impressions。一个联盟都不能合并这两个。我认为马克的解决方案会奏效。@sandeep0101。什么?SQL不要求联合
/联合所有
的列名相同。输出列名取自第一个子查询。