SQL_Snowflake_ハッシュ値で抽出結果の一致を確認する #342日目
久しぶりに更新できました…!
複数のSQLで結果が同じかどうかチェックしたい時、抽出結果が数万行あると目検では無理ですし、エクセル等に落として確認するのも一手間かかります。
データベースがSnowflakeであれば、HASH_AGGというフォームで抽出結果を1つのハッシュ値で取得でき、ハッシュ値が一致していれば抽出結果が同じ、と判定することができます。
ハッシュ値とは
以下のように説明されていました。
一見何を表しているのか全く分からない文字や数字の羅列ですが、ランダムな文字列(や数字)が出てくるのではなく、ある一つのものを表現するときは常に同じ文字列(や数字)が出てくるということです。
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