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になります。

利用用途は、同じテーブルで片方は履歴用テーブル(バックアップなど)とデイリーで作成する情報を比較して不正なデータを探す。といった場合などに使ったりします。

▼応用的な使い方として、新旧テーブルのそれぞれの項目差分のみを抽出する方法もあります

おすすめの記事