Warning

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

データ期待値の定義

データ期待値は、データセットの入力または出力に対してコードで定義された一連の要件です。これらの要件、または「期待値」は、データパイプラインの安定性を向上させるためのチェックを作成するために使用できます。データセットのビルドの一部としてデータ期待値のチェックが失敗した場合、ビルドは自動的に中止され、時間とリソースを節約し、下流データの問題を避けることができます。データ期待値は、監視のために Data Health と統合されています。

Python Transformsのドキュメント内のガイドを見て始めるか、利用可能なすべての期待値のリファレンスを参照してください。

データ期待値を使用する利点

  • パイプライン保護 - 期待値はビルドの一部として実行されるため、期待値が失敗した場合にビルドを中止し、下流のエラーや不良データが下流のリソースに伝播するのを防ぐことができます。
  • 変更管理 - 期待値はCode Repositoriesで定義されるため、それらを変更するには保護されたブランチに設定された同じプルリクエストレビュープロセスが必要になります。
  • プロアクティブなテスト - 開発ブランチでビルドすることにより、保護されたブランチに変更をマージする前にチェックの失敗を予測します。

用語

  • 期待値 - データ構造や内容に対する強く型付けされた要件(例:列はnullではない)
  • チェック - トランスフォームの単一のデータセット(出力または入力)に接続された有意義な期待値(複数の期待値の組み合わせも可能)。チェックには名前があり、それが識別および監視に使用されます(例:"オブジェクトスキーマの検証")。
    • 事前条件 - トランスフォームの入力に割り当てられたチェックで、通常はビルドを進める前に入力の構造や内容の基本的な仮定を検証するために使用されます。
    • 事後条件 - トランスフォームの出力に割り当てられたチェックで、通常はデータセットのSLAが維持され、下流の依存関係が保護されることを保証するために使用されます。
  • チェック結果 - チェックが実行される(ビルド中)と生成され、期待値の結果とその詳細情報を含みます。チェック結果はData Healthで監視できます。

それはどのように動作するのですか?

定義

データ期待値は、関連するCode Repositoryのデータセットトランスフォームで定義されます。チェックはトランスフォームの入力と出力に適用できます(詳細についてはガイドを参照)。チェックの名前は、単一のトランスフォーム内で一意でなければなりません。

チェックは、その期待値とともに、ビルド時間中に失敗がどのように処理されるかを定義します。チェックが失敗した場合、ビルドは中止されるか、警告とともに再開されます。

チェックは、関連するブランチのCI中に登録されます。保護されたブランチの期待値を変更するには、他のコード変更と同様にプルリクエストが必要になります。

保護されたブランチに変更を加えるときは、デフォルトのブランチに変更をマージする前に、開発ブランチでデータセットをビルドして、データ期待値が満たされることを確認することをお勧めします。

実行

登録されたチェックは、ビルドジョブの一部として実行されます。データ期待値を満たせなかった場合は、Builds application とデータセットの History tab でハイライトされます。チェック定義がエラー時にFAILを示す場合、ジョブステータスは適切なエラーで「中断」となります。ジョブタイムラインでは「期待値」インジケータを見つけることができます。このインジケータをクリックすると、チェック結果と異なる期待値の詳細が表示されます。

事前条件が失敗したとき、トランスフォームの出力が中止されます(事前条件が定義された入力ではなく)。入力データセットのビルドを中止するには、データ期待値を入力データセットトランスフォームの事後条件として定義する必要があります。

監視

各チェックの実行は結果を生成し、Data Health に報告します。最新のデータ期待値の結果は、通知と課題トリガーが設定できるデータセットプレビューアプリケーションの Health tab に表示されます(他のData Healthチェックと同様)。

データセットのチェックは、その名前で一意に識別されることを忘れないでください。チェックの履歴および個々の監視設定は、その名前が変わらない限り維持されます。チェックの名前を変更すると、古いチェックを削除し、その場に新しいチェックを作成するのと同じです。

インクリメンタル

すべてのチェックは、トランスフォームのインクリメンタルな性質に関係なく、フルデータセットで実行されます。

例えば、インクリメンタルとして実行されるトランスフォームの出力にプライマリキーチェックがあると仮定しましょう。データ期待値のチェックは常に完全なデータセットで実行されるため、新しいプライマリキーが新しいトランザクションに含まれていて(これがインクリメンタルに書き込まれる予定)、そのプライマリキーが既に書き込まれていた場合(以前のトランザクションで)、チェックは失敗します。