見出し画像

SQL_Snowflake_ハッシュ値で抽出結果の一致を確認する #342日目

久しぶりに更新できました…!

複数のSQLで結果が同じかどうかチェックしたい時、抽出結果が数万行あると目検では無理ですし、エクセル等に落として確認するのも一手間かかります。

データベースがSnowflakeであれば、HASH_AGGというフォームで抽出結果を1つのハッシュ値で取得でき、ハッシュ値が一致していれば抽出結果が同じ、と判定することができます。


ハッシュ値とは

以下のように説明されていました。

ハッシュ値とは、元になるデータから一定の計算手順により求められた固定長の値。その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。

IT用語辞典

一見何を表しているのか全く分からない文字や数字の羅列ですが、ランダムな文字列(や数字)が出てくるのではなく、ある一つのものを表現するときは常に同じ文字列(や数字)が出てくるということです。


HASH_AGGの使い方

とても簡単に使うことができます。
以下のように記述すればOKです。HASH_AGGの後ろのFROMにあるSQLの結果をハッシュ化して取得します。

SELECT HASH_AGG(*) FROM (SELECT * FROM table_name);

例えば以下のようなハッシュ値が返ってきます。

-6473080236524502285

これを比較したいSQLで取得して、同じ値が返ってきていればSQLの実行結果が完全に一致していることがわかります。

例えば以下のように使います。2つのテーブルからの抽出結果が完全一致するかどうかの確認です。

SELECT HASH_AGG(*) FROM (SELECT * FROM table_name)
UNION ALL
SELECT HASH_AGG(*) FROM (SELECT * FROM another_table_name);

ハッシュ値が同じであれば抽出結果が完全一致しているとわかります。

-6473080236524502285
-6473080236524502285


ここまでお読みいただきありがとうございます!


参考

https://wa3.i-3-i.info/word11949.html


いいなと思ったら応援しよう!