NOT EXISTS :
table1のレコードからtable2に存在する情報をKEYで比較して抽出対象外にする方法
SELECT
t1.id
FROM
dataset.table AS t1
WHERE
NOT EXISTS
(
SELECT
id
FROM
dataset.table AS t2
WHERE
t1.id = t2.id
)
EXCEPT DISTINCT :
table1のレコードからtable2に存在する情報を全項目で比較して抽出対象外にする方法
SELECT
*
FROM
`dataset.table1`
EXCEPT DISTINCT
SELECT
*
FROM
`dataset.table2`
EXCEPT DISTINCTは他のSQLだとoracleとかだとMINUS、mysqlなどだとEXCEPTという感じで使えましたが、bigqeuryの場合は、 EXCEPTとDISTINCTになります。
利用用途は、同じテーブルで片方は履歴用テーブル(バックアップなど)とデイリーで作成する情報を比較して不正なデータを探す。といった場合などに使ったりします。
▼応用的な使い方として、新旧テーブルのそれぞれの項目差分のみを抽出する方法もあります


