目次
チェックサムとは
チェックサムとは、データの整合性を確認するための手法です。
データから特定のアルゴリズム(ハッシュ関数など)を利用して、固定長のチェックサム値を生成します。チェックサム値が同じ場合、データの中身が一致している可能性が高く、チェックサム値が異なる場合、データの中身が異なると判断できます。
クエリをリファクタリングする際や、テーブルを書き換えたときに、書き換え前後で値が一致している(デグレしていない)ことをチェックするのに役立ちます。
データベースによってはチェックサム用の関数が用意されていることもあります。例えば、Oracle Databaseではチェックサム関数が用意されています。
BigQueryでチェックサムをする方法
BigQueryの標準SQLでチェックサムをするには、以下のクエリを実行します。(FROM句の参照テーブルは書き換えてください。)
■sql
SELECT BIT_XOR( FARM_FINGERPRINT( TO_JSON_STRING(t) ) ) FROM `my_project.my_dataset.my_table` AS t
クエリの内容を解説します。
- TO_JSON_STRINGで、テーブルの各行をJSON文字列に変換します。
- FARM_FINGERPRINTで、JSON文字列に対応するハッシュ値を取得します。
- BIT_XORで、すべての行のビットXOR演算の結果を返します。
まとめると、テーブルの各行を文字列に変換し、対応するハッシュ値を取得し、そのハッシュ値のビット演算結果をチェックサム値として獲得します。
これは、データ行の並び順が変わっても機能します。
まとめ
BigQueryでも、上記のようなクエリを使用することでチェックサムを行うことができます。これによって、リファクタリング時の値の一致確認などを簡単に行うことができます。