今回は、データベース毎にデータの差分クエリーを投稿します。
(備忘録として…)
#1.何のために差分するのか?
私が新人の頃は、ソースを修正する際に先輩方から「コンペアするといいよ」と教わりました。
最初は、コンペアの意味すら分からなかったが、つまり差分を求める意味だと理解してから、
新旧のソースコードをダウンロードして、ディフツールで修正箇所の差異を確認するようになりました。
#2.それから年月が流れて…
多少エンジニアとして経験を積み、新基幹システムのデータベースの設計業務に携わる身になってからは、
新システムへ移行する際に必要な旧システムのデータとの差異を日々確認していました。
それ以降は並行稼働を確認する際、差分の関数を使うようになりました。(当時は、Oracleを使用していました)
##3.クエリーによる差分確認
最近は、データ基盤を使用するようになったのでPrestoの書き方を記載しました。(ほぼOracleは忘れている、、、)
oracle
Oraceの場合、MINUS関数を使用して差分を取得します。
select * from test_a
MINUS
select * from test_b
Presto
OracleのMINUSが拡張である一方、PrestoのEXCEPTはANSI準拠になっています。
select * from test_a
except
select * from test_b
特に気を付けなければいけない事は、test_aのSELECT結果からtest_bのSELECT結果を除外するため、
test_aに存在するレコードのみが返ってきます。
ここは、順番が逆にならないように気を付けてください。