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

データが満たすべき条件を定義する

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

はじめるには、Python トランスフォームのドキュメントにあるガイドを参照するか、利用可能なすべての条件のリファレンスを参照してください。

データが満たすべき条件を使用するメリット

  • パイプラインの保護 - データが満たすべき条件のチェックはビルドの一環として実行されるため、条件を満たさなかった場合にビルドを中止し、下流での失敗や不正なデータの下流リソースへの伝播を防ぐことができます。
  • 変更管理 - データが満たすべき条件は Code Repositories で定義されるため、変更するには、保護されたブランチに設定されているものと同じプルリクエストのレビュープロセスが必要です。
  • 事前テスト - 保護されたブランチに変更をマージする前に、開発ブランチでビルドしてチェックの失敗を予測します

用語

  • データが満たすべき条件 - データの構造または内容に対する、厳密に型付けされた要件(たとえば、列が null ではないこと)
  • チェック - トランスフォーム内の単一のデータセット(出力または入力)に関連付けられた、意味のある条件(複数の条件を組み合わせることもできます)。チェックには、識別と監視に使用する名前があります(たとえば、「オブジェクトスキーマの検証」)。
    • 事前条件 - トランスフォームの入力に割り当てられるチェックで、通常は、ビルドを進める前に入力の構造または内容に関する基本的な前提を検証します。
    • 事後条件 - トランスフォームの出力に割り当てられるチェックで、通常は、データセットの SLA が維持され、下流の依存関係が保護されることを保証します。
  • チェック結果 - チェックの実行時(ビルド中)に生成され、データが満たすべき条件の結果とその内訳に関する情報が含まれます。チェック結果は Data Health で監視できます。

どのように機能しますか?

定義する

データが満たすべき条件は、該当するコードリポジトリ内のデータセットのトランスフォームに対して定義します。チェックは、トランスフォームの入力と出力に適用できます(詳細はガイドを参照してください)。チェック名は、単一のトランスフォーム内で一意である必要があります。

チェックでは、データが満たすべき条件とともに、ビルド時の失敗の処理方法を定義します。チェックに失敗した場合、ビルドを中止するか、警告付きで再開できます。

チェックは、該当するブランチでの CI 実行中に登録されます。保護されたブランチの条件を変更するには、ほかのコード変更と同様にプルリクエストが必要です。

保護されたブランチを変更する場合は、デフォルトブランチに変更をマージする前に、開発ブランチでデータセットをビルドして、データが満たすべき条件を満たしていることを確認することを推奨します。

実行する

登録されたチェックは、ビルドジョブの一環として実行されます。データが満たすべき条件を満たさなかった場合は、Builds アプリケーションおよびデータセットの履歴タブで強調表示されます。チェックの定義でエラー時に FAIL とすることが指定されている場合、ジョブのステータスは適切なエラーとともに「中止」に変わります。ジョブのタイムラインには「データが満たすべき条件」インジケーターがあり、クリックするとチェック結果とそれぞれの条件の内訳が表示されます。

事前条件のチェックに失敗した場合、トランスフォームの出力が中止されます(事前条件が定義された入力ではありません)。入力データセットのビルドを中止するには、その入力データセットのトランスフォームに、データが満たすべき条件を事後条件として定義する必要があります。

監視する

チェックを実行するたびに、結果が生成され、Data Health に報告されます。データが満たすべき条件の最新の結果は、データセットプレビューアプリケーションのヘルスタブに表示されます。ここでは、ほかの Data Health チェックと同様に、通知と Issue のトリガーを設定できます。

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

インクリメンタル(差分処理)

トランスフォームがインクリメンタルかどうかにかかわらず、すべてのチェックはデータセット全体に対して実行されます。

たとえば、インクリメンタルに実行されるトランスフォームの出力に主キーチェックがあるとします。データが満たすべき条件のチェックは常にデータセット全体に対して実行されるため、新しいトランザクション(これからインクリメンタルに書き込まれるトランザクション)に新しい主キーが含まれており、同じ主キーがすでに(以前のトランザクションで)書き込まれている場合、チェックに失敗します。