私は2つの異なるGoogleスプレッドシートを持っています:
4列のもの
+------+------+------+------+
| Col1 | Col2 | Col5 | Col6 |
+------+------+------+------+
| ID1 | A | B | C |
| ID2 | D | E | F |
+------+------+------+------+
前のファイルの4列と、さらに2列の1つ
+------+------+------+------+------+------+
| 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
値を期待しています。
私はstandardSQLを使用しています。これは、サンプルデータを生成するために使用できるステートメントです。
#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
フィールドごとに明示的にフィールドする必要がある例は、重要な方法ではありません。
この2つのテーブルを結合するための実用的な方法はありますか?
この2つのテーブルを結合するための実用的な方法はありますか?
#standardsQL
SELECT *, NULL AS Col5, NULL AS Col6 FROM table1
UNION ALL
SELECT * FROM table2
あなたの例を使ってこれをチェックすることができます
#standardsQL
WITH table1 AS (
SELECT "ID1" AS Col1, "A" AS Col2, "B" AS Col3, "C" AS Col4
UNION ALL
SELECT "ID2", "D", "E", "F"
),
table2 AS (
SELECT "ID3" Col1, "G" AS Col2, "H" AS Col3, "J" AS Col4, "K" AS Col5, "L" AS Col6
UNION ALL
SELECT "ID4", "M", "N", "O", "P", "Q"
)
SELECT *, NULL AS Col5, NULL AS Col6 FROM table1
UNION ALL
SELECT * FROM table2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加