我有两个不同的 Google 电子表格:
一个有 4 列
+------+------+------+------+
| Col1 | Col2 | Col5 | Col6 |
+------+------+------+------+
| ID1 | A | B | C |
| ID2 | D | E | F |
+------+------+------+------+
一个包含上一个文件的 4 列,还有 2 列
+------+------+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |
+------+------+------+------+------+------+
| ID3 | G | H | J | K | L |
| ID4 | M | N | O | P | Q |
+------+------+------+------+------+------+
我在 Google BigQuery 中将它们配置为联合源,现在我需要创建一个视图来连接两个表的数据。
两个表都有Col1
列,其中包含一个 ID,此 ID 在所有表中是唯一的,不包含复制数据。
我正在寻找的结果表如下:
+------+------+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |
+------+------+------+------+------+------+
| ID1 | A | NULL | NULL | B | C |
| ID2 | D | NULL | NULL | E | F |
| ID3 | G | H | J | K | L |
| ID4 | M | N | O | P | Q |
+------+------+------+------+------+------+
对于第一个文件没有的列,我期待一个NULL
值。
我使用的是标准 SQL,这是一个可用于生成示例数据的语句:
#standardsQL
WITH table1 AS (
SELECT "A" as Col1, "B" as Col2, "C" AS Col3
UNION ALL
SELECT "D" as Col1, "E" as Col2, "F" AS Col3
),
table2 AS (
SELECT "G" as Col1, "H" as Col2, "J" AS Col3, "K" AS Col4, "L" AS Col5
UNION ALL
SELECT "M" as Col1, "N" as Col2, "O" AS Col3, "P" AS Col4, "Q" AS Col5
)
一个简单UNION ALL
的不起作用,因为表有不同的列
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
Error: Queries in UNION ALL have mismatched column count; query 1 has 3 columns, query 2 has 5 columns at [17:1]
通配符运算符不是一种合适的方式,因为联合来源不支持
SELECT * FROM `table*`
Error: External tables cannot be queried through prefix
当然这是一个样本数据,只有 3-5 列,真实的表有 20-40 列。因此,我需要SELECT
逐个字段显式显示的示例不是一个可观的方法。
有没有一种工作方式可以加入这两个表?