データバリデーションとは?データ品質のチェックの解説
データバリデーションとは、入ってくるデータを下流に流す前に、期待 - スキーマ、型、範囲、完全性 - に対して自動的にチェックすることです。
不良データは、分析とMLの静かな殺し屋です。突然nullで届くカラム、単位が変わる通貨、ゼロに落ちる行数 - これらのいずれもが、下流のあらゆるレポートやモデルを破損させかねません。データバリデーションはこうした問題を入口で捕捉します。
データバリデーションとは何か
データバリデーションとは、データが使用される前に、定義された期待を満たすことをアサートする実践です。チェックには、スキーマ(正しいカラムと型)、範囲(妥当な範囲内の値)、完全性(予期しないnullがないこと)、一意性、鮮度(データが十分に新しいこと)が含まれます。
どこで実行されるか
バリデーションはパイプラインの境界で実行されます。データが取り込まれるとき、変換の後、そして公開される前です。境界で早期に失敗させることで不良データの伝播を止められ、これは間違ったダッシュボードを数週間後にその原因まで遡って追跡するよりもはるかに安価です。
ツールと期待
Great Expectations、Pandera、dbtテストのようなツールを使えば、期待をコードとして宣言できます。バリデーションスイートはその後、成功または失敗するステップとして実行され、データ品質を願望ではなくチェック可能なゲートに変えます。
CIにおけるバリデーション
すべてのpull requestに対してCIでサンプルデータに対するバリデーションを実行し、またスケジュールされたパイプライン実行のゲートとして実行することで、スキーマの変更や不良なソースが到達する前に捕捉されます。
steps:
- run: great_expectations checkpoint run ingest_suite
- run: pytest tests/data_contractsLatchkeyに関する注記
バリデーションジョブは実行のたびにサンプルデータセットと依存関係を読み込みます。Latchkeyでは、それらを実行間でキャッシュすることでゲートが高速に保たれ、auto-retryが一時的なソースのタイムアウトと本物のデータ品質の失敗を区別するため、ネットワークの一時的な不具合のためにパイプライン全体を再実行せずに済みます。
重要なポイント
- データバリデーションは、使用前にデータがスキーマ、型、範囲、完全性の期待を満たすことをアサートします。
- パイプラインの境界でチェックを実行することで、不良データが下流に伝播するのを止めます。
- Great Expectationsのようなツールは、データ品質をCIで実行できるpass/failのゲートに変えます。