ゼファーネットのロゴ

データ パイプラインのテストとモニタリング: パート XNUMX – DATAVERSITY

日付:

あなたは、クラウド ストレージからの大規模なデータ パイプラインの保守、またはデータ ウェアハウスへのデータのストリーミングを担当しているとします。 変換のたびにデータが期待どおりであることを確認するにはどうすればよいでしょうか? そこでデータ品質テストが登場します。データ テストでは、一連のルールを使用して、データが特定の要件に準拠しているかどうかを確認します。

データテストは、 データパイプライン、取り込みポイントから目的地まで、ただし、いくつかのトレードオフが関係します。

一方で、データ監視というサブセットがあります。 データの可観測性。 データが要件を満たしているかどうかを評価するための特定のルールを作成する代わりに、データ監視ソリューションはパイプライン全体のデータの事前定義されたメトリクスを許容可能なしきい値と照合して常にチェックし、問題について警告します。 これらのメトリクスを使用すると、問題を明示的にテストすることなく、手動とアルゴリズムの両方で問題を早期に検出できます。

データ テストとデータ モニタリングはどちらもデータ信頼性エンジニアリングの下位分野に不可欠な部分ですが、それらは明らかに異なります。 

この記事では、それらの違いについて詳しく説明し、テストとモニターをどこにどのように実装する必要があるかをさらに深く掘り下げます。 記事のパート XNUMX ではデータ テストについて詳しく説明し、記事のパート XNUMX ではデータ監視のベスト プラクティスに焦点を当てます。 

データ パイプラインのテストとモニタリング

データ テストは、値、列、テーブルなどの単一オブジェクトを、一連のビジネス ルールと比較することによって評価する実践です。 この実践では、データ品質要件に照らしてデータを検証するため、データ品質テストまたは機能データ テストとも呼ばれます。 データ品質には多くの側面がありますが、たとえば、日付フィールドが正しい形式であるかどうかを評価する、一目瞭然のデータ テストです。

その意味で、データテストは 審議する つまり、それらは単一の特定の目標を持って実装されています。 対照的に、データ監視は 不定。 経時的にメトリクスを記録することで、何が正常であるかのベースラインを確立できます。 値が逸脱した場合にのみ、アクションを実行し、必要に応じて、そもそもデータのドリフトを防ぐテストを開発および実装してフォローアップする必要があります。

データテストも 特定の、単一のテストとして、データ パイプラインの特定の時点でデータ オブジェクトを検証します。 一方、モニタリングは、状況を明らかにする場合にのみ価値を持ちます。 包括的な パイプラインの写真。 データ エンジニアは、データ パイプライン内の複数のコンポーネントのさまざまなメトリクスを長期にわたって追跡することで、データ エコシステム全体に関する異常を解釈できます。

データテストの実施

このセクションでは、データ テストの実装について詳しく説明します。 いくつかのアプローチがあり、いずれかを選択する際に考慮すべき点がいくつかあります。

データテストのアプローチ

データ テストには XNUMX つのアプローチがあり、以下にまとめます。

パイプラインの実行後にデータを検証することは、データ品質の問題を検出するためのコスト効率の高いソリューションです。 このアプローチでは、データ パイプラインの中間段階ではテストは実行されません。 テストは、完全に処理されたデータが確立されたビジネス ルールと一致するかどうかのみをチェックします。

XNUMX 番目のアプローチは、最終ロードを含む、データ ソースから宛先までのデータを検証することです。 これは、時間のかかるデータ テストの方法です。 ただし、このアプローチでは、データ品質の問題を根本原因まで追跡します。

XNUMX 番目の方法は、前の XNUMX つの方法を合成したものです。 このアプローチでは、生データと本番データの両方が単一のデータ ウェアハウスに存在します。 その結果、データも同じテクノロジーで変換されます。 として知られるこの新しいパラダイム ELT、組織はデータ モデリングの取り組みにテストを直接組み込むようになりました。

データテストの考慮事項

アプローチを選択する際には、トレードオフを考慮する必要があります。

初期費用は低いが、メンテナンス費用は高い

初期費用が最も低いソリューションを選択して、データ送信先のみでテストを実行することには、退屈なものからまったく悲惨なものまで、一連の欠点があります。

まず、データ品質の問題を早期に検出することは不可能であるため、ある変換の出力が次のステップの入力基準と一致しない場合、データ パイプラインが中断される可能性があります。 Unix タイムスタンプを日付に変換する XNUMX つの変換ステップの例を考えてみましょう。次のステップでは、表記法が dd/MM/yyyy から yyyy-MM-dd に変更されます。 最初のステップで何らかのエラーが発生した場合、XNUMX 番目のステップは失敗し、エラーがスローされる可能性が高くなります。

データ パイプラインは多かれ少なかれブラック ボックスであるため、データ エラーの根本原因を特定するテストがないことも考慮する価値があります。 したがって、何かが壊れたり、予期しない結果が生じたりした場合、デバッグは困難になります。

もう XNUMX つ考慮すべき点は、宛先でデータをテストするとパフォーマンスの問題が発生する可能性があることです。 データ テストでは、データ ウェアハウスやレイクハウス内のデータを検証するために個々のテーブルにクエリを実行すると、干し草の山から針を見つけるために不必要なワークロードでこれらのシステムに過負荷がかかる可能性があります。 これにより、データ ウェアハウスのパフォーマンスと速度が低下するだけでなく、使用コストも増加する可能性があります。 

ご覧のとおり、パイプライン全体でデータ テストや不測の事態を実装しない場合の結果は、データ チームにさまざまな不快な影響を与える可能性があります。

レガシースタック、高複雑性

通常、レガシー データ ウェアハウス テクノロジー (普及しているものの時代遅れのテクノロジーなど) OLAPキューブ) 正しく拡大縮小されません。 そのため、多くの組織は集計データのみをロードすることを選択しており、データは多くのツールに保存され、処理されます。 このアーキテクチャでは、解決策は、多くの場合、さまざまなテクノロジーや関係者にまたがる複数のステップでパイプライン全体のテストを設定することです。 これにより、操作に時間とコストがかかります。

一方で、BigQuery、Snowflake、Redshift などの最新のクラウドベースのデータ ウェアハウス、または Delta Lake のようなデータ レイクハウスを使用すると、作業がはるかに簡単になる可能性があります。 これらのテクノロジーは、ストレージとコンピューティング能力を個別に拡張するだけでなく、半構造化データも処理します。 その結果、組織はログ、データベース ダンプ、SaaS ツールの抽出物をクラウド ストレージ バケットに放り込み、そこで処理され、クリーンアップされるのを待つことができます。 & データウェアハウス内でテストされています。 

この ELT アプローチにはさらに多くの利点があります。 まず、データ テストは XNUMX つのツールで構成できます。 第 XNUMX に、処理されたコードにデータ テストを埋め込んだり、オーケストレーション ツールで構成したりする自由が得られます。 最後に、データ テストは高度に一元化されているため、宣言的な方法で設定できます。 アップストリームの変更が発生した場合、新しいテストを実装する適切な場所を見つけるためにコードの部分を調べる必要はありません。 逆に、設定ファイルに行を追加することで実行できます。

データテストツール

データ テストを設定するにはさまざまな方法があります。 自作の解決策は、 例外処理 または、データの特定のプロパティをチェックするアサーション。 ただし、これは標準化されておらず、弾力性もありません。

そのため、dbt、Great Expectations、Soda、Deequ など、多くのベンダーがスケーラブルなソリューションを考案してきました。 簡単な概要:

  • 最新のデータ スタックを管理する場合、次のものも使用している可能性が高くなります。 DBT。 このコミュニティの人気者は商用オープンソースとして提供されており、テストモジュールが組み込まれています。
  • Python でテストを実装するための一般的なツールは次のとおりです。 大いなる遺産。 すぐに使用できるテストまたはカスタム テストを実装する XNUMX つの異なる方法が提供されます。 dbt と同様に、オープンソースと商用製品があります。
  • ソーダ、もう XNUMX つの商用オープンソース ツールには、Great Expectations の機能と一致するテスト機能が付属しています。 違いは、Soda がデータ監視も含む、より広範なデータ信頼性エンジニアリング ソリューションであることです。
  • Spark を使用する場合、すべてのデータは Spark データフレーム ある時点で。 
  • ディーク は、Spark DataFrame にテストとメトリクスを実装する簡単な方法を提供します。 最良の点は、テストを再実行するときにデータセット全体を処理する必要がないことです。 以前の結果をキャッシュして変更します。

データ監視のベスト プラクティスに焦点を当てたパート XNUMX にご期待ください。

スポット画像

最新のインテリジェンス

スポット画像