データ接続と統合Pipeline Builderデータの期待値データ期待値

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

データが満たすべき条件

データが満たすべき条件は、データセット出力に適用できる要件です。これらの要件(「条件」と呼びます)を使って、データパイプラインの安定性を向上させるチェックを作成できます。

データが満たすべき条件は、パイプラインの各出力に設定でき、生成される出力が満たすべき条件を定義します。Pipeline Builder は、次の種類の条件をサポートしています。

  • プライマリーキー: 選択した列に null 値がなく、その組み合わせが一意であることを検証します。
  • 行数: 出力の行数が期待される範囲内にあることを検証します。
  • 値が次のいずれか: 選択した列の各値が、許可された値のリストに含まれることを検証します。
  • 値が null ではない: 選択した列に null 値がないことを検証します。
  • Float と Double が NaN ではない: 選択した浮動小数点数の列に NaN 値がないことを検証します。
  • 行レベル: ブール値を返す列の式を受け取り、出力のすべての行で条件が満たされていることを検証します。

データが満たすべき条件ペインのスクリーンショット

いずれかの条件のチェックに失敗すると、ビルドに失敗します。ジョブの条件ペインには、どの条件のチェックに成功し、どの条件のチェックに失敗したかが表示されます。

主キーに関するデータが満たすべき条件

主キーの条件には1個以上の列名を指定し、次のことを検証します。

  • 各列に null 値がないこと。
  • 列の組み合わせが一意であること。

インクリメンタル(差分処理)ビルドで主キーのチェックに時間がかかる場合は、主キー列にプロジェクションを追加してみてください。

主キーに関するデータが満たすべき条件の例

選択した列について、すべてのエントリーが一意であることをチェックします。

2列を選択した場合は、両方の列の組み合わせが一意であることをチェックします。

この例では、id と time はデータセットに存在する2列です。

データセットの例:

idtime
18pm
19pm
28pm
38pm

上の例はチェックに成功します。1 と 8pm はそれぞれ単独では繰り返されていますが、id と time の組み合わせは一意であるためです。

一方、次の例はチェックに失敗します。

idtime
18pm
29pm
18pm

このテーブルは、1 と 8pm の組み合わせが繰り返されているため、チェックに失敗します。

行数に関するデータが満たすべき条件

行数の条件には、最小行数、最大行数、またはその両方を指定します。

最小行数を指定した場合、条件のチェックでは、指定した行数以上の行があることを検証します。

最大行数を指定した場合、条件のチェックでは、指定した行数以下の行があることを検証します。

値が次のいずれかであるというデータが満たすべき条件

値が次のいずれかの条件には、列と許可された値のリストを指定します。すべての行で、その列の値が許可された値のいずれかに一致することを検証します。

この条件は、カテゴリーが固定されていることを前提とする下流のロジックを保護するために使用します。たとえば、ステータス列に ACTIVE、INACTIVE、PENDING の値のみを含める必要がある場合です。

たとえば、許可された値が ACTIVE と INACTIVE の場合、次のテーブルはチェックに成功します。

idstatus
1ACTIVE
2INACTIVE
3ACTIVE

一方、次のテーブルは、PENDING が許可された値に含まれないため、チェックに失敗します。

idstatus
1ACTIVE
2PENDING

値が null ではないというデータが満たすべき条件

値が null ではないの条件には列を指定し、出力のどの行でも、その列の値が欠落していないことを検証します。

この条件は null 値のみをチェックします。空の文字列は欠損値ではなく値であるため、空の文字列を含む行はチェックに成功します。列に値が存在し、かつ一意である必要がある場合は、代わりに主キーの条件を使用します。

Float と Double が NaN ではないというデータが満たすべき条件

Float と Double が NaN ではないの条件は、浮動小数点数の列に NaN(「非数」)値がないことを検証します。NaN 値は通常、ゼロをゼロで割るなどの未定義の算術演算や、数値以外の値を Float または Double にキャストすることで発生します。

NaN は欠損値ではなく有効な浮動小数点値であるため、値が null ではないの条件では検出されません。NaN 値は集計でも伝播するため、1個の NaN 値によって、合計や平均などの集計結果が NaN になることがあります。ダッシュボードやモデルなど、下流で出力を利用するものが明確に定義された数値に依存している場合は、その数値出力にこの条件を追加します。

プロパティ値に NaN を含むオブジェクトは、インデックス化に失敗します。Object Storage v2(OSv2)はプロパティ値として NaN や ±infinity を許可しないため、オブジェクトタイプのデータソースに NaN 値が到達すると、バッチデータソースではインデックス化ジョブに失敗し、ストリーミングデータソースでは違反するレコードが破棄されます。出力がオブジェクトタイプの元データとなる場合は、この条件を追加して、NaN 値がオントロジーに到達する前に検出します。詳細については、データの制限を確認してください。

行レベルのデータが満たすべき条件

行レベルの条件には、ブール値を返す列の式を指定し、出力のすべての行に対してその条件を実行します。条件を設定するときに、評価する式をドロップダウンから選択します。すべての行で条件の評価結果が true になる場合にのみ、チェックに成功します。

検証する条件がほかの種類の条件では対応できない場合や、2列以上に依存する場合は、行レベルの条件を使用します。たとえば、quantity 列が常にゼロより大きいことや、end_time の値が常に同じ行の対応する start_time の値よりも後であることを検証できます。