BigQueryで2つのテーブルのカラム差分を確認するやり方についてです。
下記のように2つのテーブルがあったときに、
テーブルA
id | name | price |
---|---|---|
001 | Orange | 300 |
002 | Apple | 150 |
003 | Banana | 200 |
004 | Grape | 350 |
テーブルB
id | name | price |
---|---|---|
001 | Orange | 300 |
002 | Apple | 200 |
003 | Lemon | 300 |
下記のSQLでカラム突合を行い差分を抽出します。
テーブルAとテーブルBのカラム突合
( --Aには有り、Bには無いレコード抽出
SELECT 'A-B' AS kind, * FROM A
EXCEPT DISTINCT
SELECT 'A-B' AS kind, * FROM B
)
UNION ALL
( --Bには有り、Aには無いレコード抽出
SELECT 'B-A' AS kind, * FROM B
EXCEPT DISTINCT
SELECT 'B-A' AS kind, * FROM A
)
ORDER BY 2, 3, 4, 1
カラム突合結果
kind | id | name | price |
---|---|---|---|
A-B | 002 | Apple | 150 |
B-A | 002 | Apple | 200 |
A-B | 003 | Banana | 200 |
A-B | 004 | Grape | 350 |
B-A | 004 | Lemon | 300 |