0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Prestoのクエリーで同一テーブルの差分を求める

Last updated at Posted at 2020-05-13

今回は、データベース毎にデータの差分クエリーを投稿します。
(備忘録として…)

#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に存在するレコードのみが返ってきます。

ここは、順番が逆にならないように気を付けてください。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?