EDW 移行用データ検証ツールの紹介
Google Cloud Japan Team
※この投稿は米国時間 2021 年 7 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
データの検証は、データ ウェアハウス、データベース、データレイクの移行プロジェクトにおいて重要なステップです。このステップには、ソーステーブルとターゲット テーブルの構造化データまたは半構造化データを比較し、各移行ステップ(データおよびスキーマの移行、SQL スクリプトの変換、ETL の移行など)の後にそれらが一致するかどうか検証する処理が必ず含まれます。
本日は、オープンソースの Python CLI ツールであるデータ検証ツール(DVT)についてご紹介します。異なる環境での検証を自動化し、再現性のあるソリューションを提供するツールです。このツールは、Ibis フレームワークを使用して、BigQuery、Cloud Spanner、Cloud SQL、Teradata などの多数のデータソースに接続します。
DVT を使う理由
クロス プラットフォームでのデータ検証は、簡単ではなく時間のかかる作業であり、多くのお客様はこのような作業を行うためにカスタム ソリューションを構築し、維持しなければなりません。DVT は、お客様が新たに Google Cloud に移行したデータを、オンプレミス システムの既存のデータと比較して検証するための標準的なソリューションを提供します。DVT は、既存の企業インフラストラクチャや ETL パイプラインと統合し、シームレスで自動化された検証を行うことができます。
ソリューション
DVT は、BigQuery、Cloud SQL、Spanner に加えて、サードパーティのデータベース プロダクトやファイル システムへの接続性を提供します。さらに、Cloud Composer、Cloud Functions、Cloud Run などの他の Google Cloud サービスにも簡単に統合できます。DVT は以下の接続タイプをサポートしています。
BigQuery
Cloud SQL
FileSystem(GCS、S3、またはローカル ファイル)
Hive
Impala
MySQL
Oracle
Postgres
Redshift
Snowflake
Spanner
SQL Server
Teradata
DVT は、テーブルレベルから行レベルまで、複数レベルのデータ検証機能を備えています。以下に、検証機能の一覧を示します。
テーブルレベル
テーブル行数
行数によるグループ化
列の集計
フィルタと制限
列レベル
スキーマ/カラム型データタイプ
行レベル
ハッシュ比較(BigQuery のみ)
未加工 SQL 探索
異なるデータソースでカスタムクエリを実行
DVT の使用方法
データを検証するための最初のステップは、接続の作成です。前述のデータソースのいずれにも接続を作成できます。ここでは、BigQuery に接続する例を紹介します。
これで、検証を行うことができます。これは、BigQuery と MySQL のテーブル間の検証の様子です。
集計機能が提供されていない場合のデフォルトの検証は COUNT * です。このツールは、ソーステーブルの列数をカウントし、ターゲット テーブルのカウント数と一致するかどうかを検証します。
DVT は、データを検証しながら多くのカスタマイズをサポートしています。たとえば、複数のテーブルの検証、特定の列の検証の実行、検証へのラベルの追加が可能です。
また、検証結果を YAML 設定ファイルに保存することもできます。これにより、以前の検証結果を保存したり、検証の設定を変更したりすることが可能です。`config-file` フラグを指定することで、YAML ファイルを生成できます。このフラグが指定された場合、検証は実行されず、ファイルの作成のみが行われますのでご注意ください。
ここでは、GroupedColumn 検証用の YAML 設定ファイルの例を紹介します。
YAML 設定ファイルを作成した後は、ごく簡単な手順で検証を実行できます。
検証レポートは、標準出力(デフォルト)または結果ハンドラに出力できます。このツールは現在、結果ハンドラとして BigQuery をサポートしています。
BigQuery に出力するには、`--bq-result-handler` または `-bqrh` フラグを追加するだけです。
以下は、BigQuery での検証結果の例です。BigQuery での検証レポートの完全なスキーマを表示するにはここをクリックしてください。
スタートガイド
DVT をデータ移動プロセスに組み込む準備はできましたか?こちらから PyPi でツールをご確認いただけます。ツールへのご意見は GitHub 経由でお寄せください。Google は、このツールをお客様にとっていっそう便利なものにするために、新しい機能を積極的に取り入れています。検証作業を快適に行えるようになれば幸いです。
-戦略的クラウド エンジニア Neha Nene
-マネージャー、クラウドデータ エンジニア James Fu