外部联盟等效 - GBQ

Outer Union equivalent - GBQ

我已经看到外部联合在这个 post

中是如何工作的

我想知道如何在 Google Big Query 中实现类似的东西,因为当我尝试 运行 一个外部联合时,我只是得到一个错误(我认为是因为 GBQ 不支持外联合。

例如

Table1
+---+---+
| a | b |
+---+---+
| 1 | X |
| 2 | Y |
+---+---+

Table2

+---+---+
| b | d |
+---+---+
| U | 1 |
+---+---+

CREATE TABLE OuterUnionTable AS
SELECT * FROM Table1
OUTER UNION CORR
SELECT * FROM Table2

OuterUnionTable
+----+----+---+
| a  | b  | d |
+----+----+---+
|  1 | X  |   |
|  2 | Y  |   |
|    | U  | 1 |
+----+----+---+

看起来您正在寻找以下内容

select a, b, d 
from `project.dataset.table1`
full outer join `project.dataset.table2`
using(b)       

如果应用于您问题中的示例数据 - 输出为

您可以避免指定所有列 - 如下例所示(但在这种情况下您将无法控制列的顺序)

select * 
from `project.dataset.table1`
full outer join `project.dataset.table2`
using(b) 

如果您需要保留顺序 - 请参阅下文

select t1.*, t2.* except(b)
from `project.dataset.table1` t1
full outer join `project.dataset.table2` t2
using(b)  

万一你真的需要union - 你可以使用下面的

select a, b, null as d from `project.dataset.table1`
union all
select null as a, b, d from `project.dataset.table2`