【BiqQuery】テーブル改修後のテスト手法。二つのテーブルの差分を出す

テーブルを改修した際は、必ず改修前のテーブルと比較し、
予定通りのものになっているか求めると思います。

もっともお手軽で簡単なのがexceptを使ったテスト方法です。

今回は`exceptを使うことで差分を取ります。
これは、AとBというテーブルがあった場合、
Bに存在していないAのカラムを出力します。

テストテーブル

f:id:lekam:20220408211057p:plain

select * from (
  select * from A 
  except distinct
  select * from B 
)

結果

f:id:lekam:20220408212817p:plain
そして、AとBを反対にすると、Aに存在していないBのカラムが返される。
f:id:lekam:20220408213153p:plain
Aに存在していないBのカラムは無いので、値は返されない。
f:id:lekam:20220408212958p:plain

検証する際は、両方試すことが多いので、以下のように組み合わせる
Aが改修前で、Bが改修後だと仮定した場合以下になる。

select "kaisyu_mae" as col,* 
from (
  select 
    * 
  from A_mae
  except distinct
  select
  * 
  from B_ato
)
union all 
select "kaisyu_ato" as col,* 
from (
  select * from B_ato
  except distinct
  select * from A_mae
)


改修前と改修後で差分がなければ、値は返されず、差分があれば、対象カラムが返されます。