データ品質定義言語 (DQDL) リファレンス - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データ品質定義言語 (DQDL) リファレンス

Data Quality Definition Language (DQDL) は、 AWS Glue Data Quality のルールを定義する際に使用するドメイン固有の言語です。

このガイドでは、DQDL の理解を助けるために、この言語の主要な概念について解説します。また、DQDL ルールタイプのリファレンスの中で、構文や例も提供しています。このガイドを使用する前に、 AWS Glue Data Quality について理解しておくことをお勧めします。詳細については、「AWS Glue データ品質」を参照してください。

注記

DynamicRules は ETL AWS Glue でのみサポートされています。

DQDL 構文

DQDL のドキュメントでは大文字と小文字が区別されます。また、個々の 品質評価ルールをグループ化したルールセットが含まれます。ルールセットを作成するには、Rules という名前 (大文字) の、角括弧で区切られたリストを作成する必要があります。リストの中には、次の例のようにカンマで区切られた 1 つ以上の DQDL ルールを含めます。

Rules = [ IsComplete "order-id", IsUnique "order-id" ]

ルールの構造

DQDL ルールの構造は、そのルールタイプによって異なります。ただし、DQDL の各ルールは、以下のような基本的な形式を取ります。

<RuleType> <Parameter> <Parameter> <Expression>

RuleType は設定するルールタイプの名前で、大文字と小文字が区別されます。例えば、IsCompleteIsUnique、または CustomSql などです。ルールタイプごとに、ルールのパラメータが異なります。DQDL のルールタイプと、そのパラメータの詳細なリファレンスについては、「DQDL ルールタイプリファレンス」を参照してください。

複合ルール

DQDL では、ルールを組み合わせる際に、以下の論理演算子を使用できます。これらのルールは複合ルールと呼ばれます。

and

and 論理演算子は、接続するルールがすべて true である場合に限り、結果に true を返します。それ以外の場合、ルールの組み合わせ結果は false になります。and 演算子前後に配置する各ルールは、丸括弧で囲む必要があります。

次の例では、and 演算子を使用して 2 つの DQDL ルールを組み合わせています。

(IsComplete "id") and (IsUnique "id")
or

or 論理演算子は、接続するルールが 1 つ以上 true であれば、結果に true を返します。or 演算子前後に配置する各ルールは、丸括弧で囲む必要があります。

次の例では、or 演算子を使用して 2 つの DQDL ルールを組み合わせています。

(RowCount "id" > 100) or (IsPrimaryKey "id")

同じ演算子を使用して複数のルールを接続でき、次のようなルールの組み合わせが可能です。

(Mean "Star_Rating" > 3) and (Mean "Order_Total" > 500) and (IsComplete "Order_Id")

ただし、論理演算子を 1 つの表現内でまとめることはできません。例えば、以下のように組み合わせることはできません。

(Mean "Star_Rating" > 3) and (Mean "Order_Total" > 500) or (IsComplete "Order_Id")

複合ルールの仕組み

デフォルトでは、複合ルールはデータセットまたはテーブル全体で個別のルールとして評価され、結果は結合されます。つまり、最初に列全体を評価し、次に演算子を適用します。このデフォルトの動作については、以下に例を挙げて説明します。

# Dataset +------+------+ |myCol1|myCol2| +------+------+ | 2| 1| | 0| 3| +------+------+ # Overall outcome +----------------------------------------------------------+-------+ |Rule |Outcome| +----------------------------------------------------------+-------+ |(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)|Failed | +----------------------------------------------------------+-------+

上記の例では、 はAWS Glue Data Quality最初に(ColumnValues "myCol1" > 1)失敗する を評価します。その後、(ColumnValues "myCol2" > 2)どの も失敗するかを評価します。両方の結果の組み合わせは FAILED と表示されます。

ただし、行全体を評価する必要がある動作のような SQL が必要な場合は、以下のコードスニペットadditionalOptionsに示すように、 ruleEvaluation.scopeパラメータを明示的に設定する必要があります。

object GlueApp { val datasource = glueContext.getCatalogSource( database="<db>", tableName="<table>", transformationContext="datasource" ).getDynamicFrame() val ruleset = """ Rules = [ (ColumnValues "age" >= 26) OR (ColumnLength "name" >= 4) ] """ val dq_results = EvaluateDataQuality.processRows( frame=datasource, ruleset=ruleset, additionalOptions=JsonOptions(""" { "compositeRuleEvaluation.method":"ROW" } """ ) ) }

設定すると、複合ルールは行全体を評価する単一のルールとして動作します。次の例は、この動作を示しています。

# Row Level outcome +------+------+------------------------------------------------------------+---------------------------+ |myCol1|myCol2|DataQualityRulesPass |DataQualityEvaluationResult| +------+------+------------------------------------------------------------+---------------------------+ |2 |1 |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed | |0 |3 |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed | +------+------+------------------------------------------------------------+---------------------------+

一部のルールは、全体的な結果がしきい値または比率に依存するため、この機能ではサポートできません。これらは以下に記載されています。

比率に依存するルール:

  • Completeness

  • DatasetMatch

  • ReferentialIntegrity

  • Uniqueness

しきい値に依存するルール:

次のルールにしきい値 が含まれる場合、それらはサポートされません。ただし、 を含まないルールwith thresholdは引き続きサポートされます。

  • ColumnDataType

  • ColumnValues

  • CustomSQL

表現

ルールタイプがブール型で応答を生成しない場合、この応答を取得するには、パラメータで表現を指定する必要があります。例えば、次のルールでは、表現に対応させながら列内のすべての値の mean 値 (平均) をチェックし、真または偽の結果を返します。

Mean "colA" between 80 and 100

一部のルールタイプ (IsUniqueIsComplete など) は、既にブール型の応答を返しています。

次の表に、DQDL ルールで使用できる式を一覧で示します。

サポートされている DQDL 表現
説明
=x ルールタイプの応答が x と等しい場合、true を返します。
Completeness "colA" = "1.0", ColumnValues "colA" = "2022-06-30"
!=x x ルールタイプのレスポンスが x と等しくない場合、true に解決されます。
ColumnValues "colA" != "a", ColumnValues "colA" != "2022-06-30"
> x ルールタイプの応答が x より大きい場合、true を返します。
ColumnValues "colA" > 10
< x ルールタイプの応答が x より小さい場合、true を返します。
ColumnValues "colA" < 1000, ColumnValues "colA" < "2022-06-30"
>= x ルールタイプの応答が x 以上の場合、true を返します。
ColumnValues "colA" >= 10
<= x ルールタイプの応答が x 以下の場合、true を返します。
ColumnValues "colA" <= 1000
between x and y ルールタイプの応答が指定された範囲内 (上下限は除外) にある場合、true を返します。この式のタイプは、数値および日付タイプにのみ使用できます。
Mean "colA" between 8 and 100, ColumnValues "colA" between "2022-05-31" and "2022-06-30"
xy の間でない ルールタイプのレスポンスが指定された範囲 (包括的) にない場合、true に解決されます。この式のタイプは、数値および日付のタイプにのみ使用できます。
ColumnValues "colA" not between "2022-05-31" and "2022-06-30"
in [a, b, c, ...] ルールタイプの応答が指定されたセットに含まれている場合に、true を返します。
ColumnValues "colA" in [ 1, 2, 3 ], ColumnValues "colA" in [ "a", "b", "c" ]
a、b、c、...] にない true ルールタイプのレスポンスが指定されたセット内にない場合、 を返します。
ColumnValues "colA" not in [ 1, 2, 3 ], ColumnValues "colA" not in [ "a", "b", "c" ]
matches /ab+c/i ルールタイプの応答が正規表現と一致する場合に、true を返します。
ColumnValues "colA" matches "[a-ZA-Z]*"
/ab+c/i と一致しない ルールタイプのレスポンスtrueが正規表現と一致しない場合、 を返します。
ColumnValues "colA" not matches "[a-ZA-Z]*"
now() 日付表現を作成する ColumnValues ルールタイプでのみ機能します。
ColumnValues "load_date" > (now() - 3 days)
matches/in [...]/not matches/not in [...] with threshold ルール条件に一致する値をパーセンテージで指定します。ColumnValues、、ColumnDataTypeおよび CustomSQLルールタイプでのみ動作します。
ColumnValues "colA" in ["A", "B"] with threshold > 0.8, ColumnValues "colA" matches "[a-zA-Z]*" with threshold between 0.2 and 0.9 ColumnDataType "colA" = "Timestamp" with threshold > 0.9

NULL、EMPTY、WHITESPACES_ONLY のキーワード

文字列列に null、空、または空白のみを含む文字列があるかどうかを検証する場合は、次のキーワードを使用できます。

  • NULL/null - このキーワードは、文字列列nullの値に対して true に解決されます。

    ColumnValues "colA" != NULL with threshold > 0.5 は、50% を超えるデータに null 値がない場合、true を返します。

    (ColumnValues "colA" = NULL) or (ColumnLength "colA" > 5) は、NULL 値または長さ >5 を持つすべての行に対して true を返します。これにはcompositeRuleEvaluation「.method」=「ROW」オプションの使用が必要になることに注意してください。

  • EMPTY / empty — このキーワードは、文字列列内の空の文字列 (「」) 値に対して true に解決されます。一部のデータ形式は、文字列列の null を空の文字列に変換します。このキーワードは、データ内の空の文字列を除外するのに役立ちます。

    (ColumnValues "colA" = EMPTY) or (ColumnValues "colA" in ["a", "b"]) 行が空、「a」、または「b」の場合、 は true を返します。これにはcompositeRuleEvaluation「.method」=「ROW」オプションの使用が必要であることに注意してください。

  • WHITESPACES_ONLY / whitespaces_only – このキーワードは、文字列列に空白 (「」) 値のみを含む文字列に対して true に解決されます。

    ColumnValues "colA" not in ["a", "b", WHITESPACES_ONLY] は、行が「a」でも「b」でも、空白でもない場合、true を返します。

    サポートされているルール:

数値または日付ベースの式の場合、列に NULL があるかどうかを検証する場合は、次のキーワードを使用できます。

  • NULL/null - このキーワードは、文字列列の NULL 値に対して true に解決されます。

    ColumnValues "colA" in [NULL, "2023-01-01"] 列内の日付が 2023-01-01または null の場合、 は true を返します。

    (ColumnValues "colA" = NULL) or (ColumnValues "colA" between 1 and 9) は、NULL 値を持つ行、または 1 から 9 までの値を持つすべての行に対して true を返します。これにはcompositeRuleEvaluation「.method」=「ROW」オプションの使用が必要になることに注意してください。

    サポートされているルール:

動的ルール

動的ルールを作成して、ルールによって生成された現在のメトリックと履歴値を比較できるようになりました。これらの履歴比較は、式に last() 演算子を使用することで可能になります。例えば、現在の実行で行数が同じデータセットの最新の行数よりも多い場合、RowCount > last() ルールは成功します。last() は、考慮すべき事前メトリクスの数を記述する自然数引数をオプションで取り、last(k) では k >= 1 が直近の k メトリクスを参照します。

  • データポイントがない場合、last(k) はデフォルト値 0.0 を返します。

  • 利用可能な k メトリクスよりも少ない場合は、last(k) はそれ以前のメトリクスをすべて返します。

有効な式を作成するには last(k) を使用します。k > 1 では、複数の履歴結果を 1 つの数値にまとめる集計関数が必要です。例えば RowCount > avg(last(5)) は、現在のデータセットの行数が、同じデータセットの直近の 5 つの行数の平均より真に大きいかどうかを確認します。現在のデータセットの行数をリストと有意に比較できないため、RowCount > last(5) はエラーを生成します。

サポートされている集計関数:

  • avg

  • median

  • max

  • min

  • sum

  • std (標準偏差)

  • abs (絶対値)

  • index(last(k), i) では直近の k から i 番目に新しい値を選択できます。i はゼロインデックスであるため、index(last(3), 0) は最新のデータポイントを返しますが、データポイントが 3 つしかなく、4 番目に新しいデータポイントにインデックスを付けようとするため、index(last(3), 3) はエラーになります。

式の例

ColumnCorrelation

  • ColumnCorrelation "colA" "colB" < avg(last(10))

DistinctValuesCount

  • DistinctValuesCount "colA" between min(last(10))-1 and max(last(10))+1

数値条件またはしきい値を使用するほとんどのルールタイプは動的ルールをサポートします。使用しているルールタイプで動的ルールがサポートされているかどうかを確認するには、提供されている「アナライザーとルール」の表を参照してください。

アナライザー

DQDL ルールは、アナライザーと呼ばれる関数を使用してデータに関する情報を収集します。この情報をルールのブール式に使用して、ルールが成功するか失敗するかを決定します。例えば、 RowCount ルールRowCount > 5 は行数アナライザーを使用してデータセット内の行数を検出し、その数を式と比較して> 5、現在のデータセットに 5 行以上が存在するかどうかを確認します。

ルールを作成する代わりに、アナライザーを作成して、異常の検出に使用できる統計を生成させることを推奨する場合があります。このような場合は、アナライザーを作成できます。アナライザーは、次の点でルールとは異なります。

特徴 アナライザー ルール
ルールセットの一部 はい はい
統計を生成 はい はい
観察結果を生成 はい はい
条件を評価してアサートできる いいえ はい
障害発生時にジョブを停止したり、ジョブの処理を続行したりするなどのアクションを設定できます。 いいえ はい

アナライザーはルールなしで独立して存在できるため、アナライザーをすばやく構成し、データ品質ルールを段階的に構築できます。

ルールセットの Analyzers ブロックに入力できるルールタイプもあります。これにより、アナライザーに必要なルールを実行し、条件のチェックを行わずに情報を収集できます。アナライザーの中には、ルールに関連付けられておらず、Analyzers ブロックにしか入力できないものもあります。次の表は、各項目がルールとしてサポートされているか、スタンドアロンアナライザーとしてサポートされているか、および各ルールタイプの詳細を示しています。

アナライザーを使用したルールセットの例

以下のルールセットでは以下のものが使用されます。

  • 直近の 3 回のジョブ実行で、データセットが平均値を上回っているかどうかを確認する動的ルール

  • データセットの Name 列内の異なる値の数を記録する DistinctValuesCount アナライザー

  • Name の最小サイズと最大サイズを経時的に追跡する ColumnLength アナライザー

アナライザーメトリクスの結果は、ジョブ実行の [データ品質] タブで確認できます。

Rules = [ RowCount > avg(last(3)) ], Analyzers = [ DistinctValuesCount "Name", ColumnLength "Name" ]

コメント

「#」文字を使用して、DQDL ドキュメントにコメントを追加できます。「#」文字の後、行の末尾までのものは DQDL によって無視されます。

Rules = [ # More items should generally mean a higher price, so correlation should be positive ColumnCorrelation "price" "num_items" > 0 ]

DQDL ルールタイプリファレンス

このセクションでは、 AWS Glue Data Quality がサポートする各ルールタイプのリファレンスを提供します。

注記
  • 現在、DQDL はリストタイプまたはネストされた列データをサポートしていません。

  • 以下の表の括弧内の値は、ルール引数で指定された情報に置き換えられます。

  • ルールでは通常、式に追加の引数が必要です。

Ruletype 説明 引数 報告されたメトリクス ルールとしてサポートされていますか? アナライザーとしてサポートされていますか? 行レベルの結果を返しますか? 動的ルールをサポートしますか? 観察結果を生成
AggregateMatch 売上総額などのサマリーメトリクスを比較して、2 つのデータセットが一致しているかをチェックします。金融機関が、すべてのデータがソースシステムから取り込まれているかを比較する際などに便利です。 1 つ以上の集計

1 番目と 2 番目の集計列名が一致する場合:

Column.[Column].AggregateMatch

1 番目と 2 番目の集計列の名前が異なる場合:

Column.[Column1,Column2].AggregateMatch

はい いいえ いいえ いいえ いいえ
AllStatistics 指定した列またはデータセット内のすべての列の複数のメトリクスを収集するスタンドアロンアナライザー。 単一の列名、OR "AllColumns"

すべてのタイプの列の場合:

Dataset.*.RowCount

Column.[Column].Completeness

Column.[Column].Uniqueness

文字列値列のその他のメトリクス:

ColumnLength metrics

数値列のその他のメトリクス:

ColumnValues metrics

いいえ はい いいえ いいえ いいえ
ColumnCorrelation 2 つの列にどの程度の相関性があるかを確認します。 列名はちょうど 2 つです Multicolumn.[Column1],[Column2].ColumnCorrelation はい はい いいえ はい いいえ
ColumnCount 抜け落ちた列がないかを確認します。 なし Dataset.*.ColumnCount はい いいえ いいえ はい はい
ColumnDataType 列がデータ型に準拠しているかをチェックします。 列名は 1 つだけです Column.[Column].ColumnDataType.Compliance はい いいえ いいえ はい (行レベルのしきい値式の場合) いいえ
ColumnExists データセットに列が存在するかをチェックします。これにより、セルフサービスのデータプラットフォームを構築しているユーザーは、特定の列が利用可能であることを確認できます。 列名は 1 つだけです 該当なし はい いいえ いいえ いいえ いいえ
ColumnLength データの長さが一貫しているかをチェックします。 列名は 1 つだけです

Column.[Column].MaximumLength

Column.[Column].MinimumLength

行レベルのしきい値が指定されている場合のその他のメトリクス:

Column.[Column].ColumnValues.Compliance

はい はい はい (行レベルのしきい値が指定されている場合) いいえ はい。最小長と最大長を分析して観察結果のみを生成します。
ColumnNamesMatchPattern 列名が定義済みのパターンと一致しているかをチェックします。ガバナンスチームが列名の一貫性を保つ際などに便利です。 列名の正規表現 Dataset.*.ColumnNamesPatternMatchRatio はい いいえ いいえ いいえ いいえ
ColumnValues データが定義済みの値と一致しているかをチェックします。このルールは正規表現に対応しています。 列名は 1 つだけです

Column.[Column].Maximum

Column.[Column].Minimum

行レベルのしきい値が指定されている場合のその他のメトリクス:

Column.[Column].ColumnValues.Compliance

はい いいえ はい (行レベルのしきい値が指定されている場合) いいえ はい。最小値と最大値を分析して観察結果のみを生成します。
Completeness データに空白または NULL がないかをチェックします。 列名は 1 つだけです

Column.[Column].Completeness

はい はい はい はい はい
CustomSql ユーザーは、ほぼすべてのタイプのデータ品質チェックを SQL に実装できます。

SQL ステートメント

(オプション) 行レベルのしきい値

Dataset.*.CustomSQL

行レベルのしきい値が指定されている場合のその他のメトリクス:

Dataset.*.CustomSQL.Compliance

はい はい はい (行レベルのしきい値が指定されている場合) はい いいえ
DataFreshness データが最新であるかをチェックします。 列名は 1 つだけです Column.[Column].DataFreshness.Compliance はい いいえ はい いいえ いいえ
DatasetMatch 2 つのデータセットを比較して、同期しているかを識別します。

参照データセットの名前

列のマッピング

(オプション) 一致を確認する列

Dataset.[ReferenceDatasetAlias].DatasetMatch はい いいえ はい はい いいえ
DistinctValuesCount 重複する値がないかをチェックします。 列名は 1 つだけです Column.[Column].DistinctValuesCount はい はい はい はい はい
DetectAnomalies 別のルールタイプで報告されたメトリクスに異常がないかチェックします。 ルールタイプ ルールタイプ引数で報告されたメトリクス (1 つまたは複数) はい いいえ いいえ いいえ いいえ
エントロピー データのエントロピーをチェックします。 列名は 1 つだけです Column.[Column].Entropy はい はい いいえ はい いいえ
IsComplete すべてのデータが完全であるかをチェックします。 列名は 1 つだけです Column.[Column].Completeness はい いいえ はい いいえ いいえ
IsPrimaryKey 列がプライマリキー (NULL および一意ではない) であるかをチェックします。 列名は 1 つだけです

1 列の場合:

Column.[Column].Uniqueness

複数列の場合:

Multicolumn[CommaDelimitedColumns].Uniqueness

はい いいえ はい いいえ いいえ
IsUnique データがすべて一意であるかをチェックします。 列名は 1 つだけです Column.[Column].Uniqueness はい いいえ はい いいえ いいえ
平均値 平均値が、設定済みのしきい値と一致するかをチェックします。 列名は 1 つだけです Column.[Column].Mean はい はい はい はい いいえ
ReferentialIntegrity 2 つのデータセットに参照整合性があるかをチェックします。

データセットの 1 つまたは複数の列名

参照データセットの 1 つまたは複数の列名

Column.[ReferenceDatasetAlias].ReferentialIntegrity はい いいえ はい はい いいえ
RowCount レコード数がしきい値と一致するかをチェックします。 なし Dataset.*.RowCount はい はい いいえ はい はい
RowCountMatch 2 つのデータセットのレコード数が一致するかをチェックします。 参照データセットのエイリアス Dataset.[ReferenceDatasetAlias].RowCountMatch はい いいえ いいえ はい いいえ
StandardDeviation 標準偏差がしきい値と一致するかをチェックします。 列名は 1 つだけです Column.[Column].StandardDeviation はい はい はい はい いいえ
SchemaMatch 2 つのデータセットのスキーマが一致するかをチェックします。 参照データセットのエイリアス Dataset.[ReferenceDatasetAlias].SchemaMatch はい いいえ いいえ はい いいえ
合計 合計が、設定済みのしきい値と一致するかをチェックします。 列名は 1 つだけです Column.[Column].Sum はい はい いいえ はい いいえ
Uniqueness データセットの一意性がしきい値と一致するかをチェックします。 列名は 1 つだけです Column.[Column].Uniqueness はい はい はい はい いいえ
UniqueValueRatio 一意の値の比率がしきい値と一致するかをチェックします。 列名は 1 つだけです Column.[Column].UniqueValueRatio はい はい はい はい いいえ

AggregateMatch

特定の式を参照して、2 つの列の集計の比率をチェックします。このルールタイプは、複数のデータセットで機能します。2 つの列の集計が評価され、1 番目の列の集計結果を 2 番目の列の集計結果で割ることで比率が算出されます。比率と指定された式が照合され、ブール型応答が生成されます。

構文

列の集計

ColumnExists <AGG_OPERATION> (<OPTIONAL_REFERENCE_ALIAS>.<COL_NAME>)
  • AGG_OPERATION – 集計に使用する操作。現在サポートされている形式は、sumavg です。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • OPTIONAL_REFERENCE_ALIAS – 列がプライマリデータセットではなく参照データセットのものである場合は、このパラメータを指定する必要があります。 AWS Glue データカタログでこのルールを使用している場合、参照エイリアスは「<database_name>.<table_name>.<column_name>」の形式に従う必要があります。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • COL_NAME — 集計する列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

例: 平均

"avg(rating)"

例: 合計

"sum(amount)"

例: 参照データセットの列の平均

"avg(reference.rating)"

ルール

AggregateMatch <AGG_EXP_1> <AGG_EXP_2> <EXPRESSION>
  • AGG_EXP_1 – 最初の列の集計。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • AGG_EXP_2 – 2 番目の列の集計。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 合計を使用した Aggregate Match

次のルール例では、amount 列の値の合計が、total_amount 列の値の合計と完全に等しいかをチェックします。

AggregateMatch "sum(amount)" "sum(total_amount)" = 1.0

例: 平均を使用した Aggregate Match

次のルール例では、ratings 列の値の平均が、reference データセットの ratings 列における値の平均の、90% 以上と等しいかをチェックします。参照データセットは、ETL またはデータカタログ体験の、追加のデータソースとして提供されます。

AWS Glue ETL では、以下を使用できます。

AggregateMatch "avg(ratings)" "avg(reference.ratings)" >= 0.9

AWS Glue データカタログでは、以下を使用できます。

AggregateMatch "avg(ratings)" "avg(database_name.tablename.ratings)" >= 0.9

Null 動作

AggregateMatch ルールは、集計メソッド (合計/平均) の計算で NULL 値を持つ行を無視します。例:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

列の平均は (0 + 20 + 40) / 3 = 20 unitsになります。この計算では、行 101 と 103 は考慮されません。

ColumnCorrelation

2 つの列間の相関関係を特定の式と照合して確認します。 AWS Glue Data Quality は、ピアソン相関係数を使用して 2 つの列間の線形相関を測定します。この結果では、-1 から 1 までの数値により、相関関係の強さと方向性が示されます。

[Syntax (構文)]

ColumnCorrelation <COL_1_NAME> <COL_2_NAME> <EXPRESSION>
  • COL_1_NAME – 品質評価ルールの評価に対応させる、最初の列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • COL_2_NAME – 品質評価ルールの評価に対応させる、2 番目の列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 列の相関

次のルール例では、列 heightweight の間の相関係数が、強い正の (係数値が 0.8 より大きい) 相関を示しているかをチェックします。

ColumnCorrelation "height" "weight" > 0.8

動的ルールの例

  • ColumnCorrelation "colA" "colB" between min(last(10)) and max(last(10))

  • ColumnCorrelation "colA" "colB" < avg(last(5)) + std(last(5))

Null 動作

ColumnCorrelation ルールでは、相関の計算にNULL値が含まれる行は無視されます。例:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

行 101 と 103 は無視され、 は 1.0 ColumnCorrelationになります。

ColumnCount

特定の式を参照しながら、プライマリデータセットの列数を確認します。この式では、>< などの演算子を使用して、行数または行の範囲を指定できます。

[Syntax (構文)]

ColumnCount <EXPRESSION>
  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 列数の数値による確認

次のルール例では、列数が特定の範囲内にあるかを確認します。

ColumnCount between 10 and 20

動的ルールの例

  • ColumnCount >= avg(last(10))

  • ColumnCount between min(last(10))-1 and max(last(10))+1

ColumnDataType

特定の列における値の固有のデータ型を、指定の、想定された型と照合します。with threshold 式を承諾し、列内の値のサブセットをチェックします。

[Syntax (構文)]

ColumnDataType <COL_NAME> = <EXPECTED_TYPE> ColumnDataType <COL_NAME> = <EXPECTED_TYPE> with threshold <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    サポートされている列の型: String 型

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPECTED_TYPE — 列内の想定されている値の型。

    サポートされている値: Boolean、Date、Timestamp、Integer、Double、Float、Long

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – 想定されている型の、値の割合を指定するオプションの式。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

例: 文字列としての、列データ型の整数。

次のルール例では、所定の列の値 (string 型) が本当に整数かをチェックします。

ColumnDataType "colA" = "INTEGER"

例: 文字列としての列データ型の整数が、値のサブセットをチェックします。

次のルール例は、所定の列の値 (string 型) の 90% 以上が本当に整数であるかをチェックします。

ColumnDataType "colA" = "INTEGER" with threshold > 0.9

ColumnExists

列が存在するかどうかを確認します。

[Syntax (構文)]

ColumnExists <COL_NAME>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

例: 列の存在

次のルール例では、Middle_Name という名前の列が存在するかどうかを確認します。

ColumnExists "Middle_Name"

ColumnLength

列内にある各行の長さが、特定の表現に適合しているかどうかを確認します。

[Syntax (構文)]

ColumnLength <COL_NAME><EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされる型: String

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 列内の行の長さ

次のルール例では、Postal_Code という名前の列内にある各行の値が、5 文字の長さであるかどうかを確認します。

ColumnLength "Postal_Code" = 5

Null 動作

このColumnLengthルールでは、 NULLを 0 文字の長さの文字列として扱います。NULL 行の場合:

ColumnLength "Postal_Code" > 4 # this will fail
ColumnLength "Postal_Code" < 6 # this will succeed

次の複合ルールの例は、NULL値を明示的に失敗させる方法を示しています。

(ColumnLength "Postal_Code" > 4) AND (ColumnValues != NULL)

ColumnNamesMatchPattern

プライマリデータセットの全列の名前が、所定の正規表現と一致するかをチェックします。

[Syntax (構文)]

ColumnNamesMatchPattern <PATTERN>
  • PATTERN – データ品質ルールを評価する際の基準となるパターン。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

例: 列名がパターンと一致する

次のルール例では、すべての列がプレフィックス「aws_」から始まっているかをチェックします。

ColumnNamesMatchPattern "aws_.*"

ColumnValues

列内の値に対して式を実行します。

[Syntax (構文)]

ColumnValues <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 許可される値

次のルール例では、指定された列の各値が許可された値のセットに含まれているかどうかを確認します (null、空、空白のみを含む文字列を含む)。

ColumnValues "Country" in [ "US", "CA", "UK", NULL, EMPTY, WHITESPACES_ONLY ]

例: 正規表現

次のルール例では、列内の値が正規表現と照合されます。

ColumnValues "First_Name" matches "[a-ZA-Z]*"

例: 日付値

次のルール例では、日付列内の値が日付表現に適合しているかをチェックします。

ColumnValues "Load_Date" > (now() - 3 days)

例: 数値

次のルール例では、列内の値が特定の数値制約に適合しているかどうかをチェックします。

ColumnValues "Customer_ID" between 1 and 2000

Null 動作

すべてのColumnValuesルール ( !=および 以外NOT IN) では、NULL行はルールに失敗します。null 値が原因でルールが失敗した場合、失敗の理由には次の内容が表示されます。

Value: NULL does not meet the constraint requirement!

次の複合ルールの例は、NULL値を明示的に許可する方法を示しています。

(ColumnValues "Age" > 21) OR (ColumnValues "Age" = NULL)

!= および not in構文を使用する否定された ColumnValues ルールは、NULL行に対して合格します。例:

ColumnValues "Age" != 21
ColumnValues "Age" not in [21, 22, 23]

次の例では、NULL値を明示的に失敗させる方法を示します。

(ColumnValues "Age" != 21) AND (ColumnValues "Age" != NULL)
ColumnValues "Age" not in [21, 22, 23, NULL]

Completeness

列内の完全な (NULL 以外の) 値を指定された式と照合し、パーセンテージで示します。

[Syntax (構文)]

Completeness <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: NULL 値のパーセンテージ

次のルール例では、列内に完全な値が 95% 以上存在するかどうかをチェックします。

Completeness "First_Name" > 0.95

動的ルールの例

  • Completeness "colA" between min(last(5)) - 1 and max(last(5)) + 1

  • Completeness "colA" <= avg(last(10))

Null 動作

CSV データ形式に関する注意: CSV 列の空白行には複数の動作が表示される場合があります。

  • 列が String型の場合、空白行は空の文字列として認識され、Completenessルールは失敗しません。

  • 列が のような別のデータ型である場合Int、空白行は として認識NULLされ、Completenessルールは失敗します。

CustomSQL

このルールタイプは、次の 2 つのユースケースをサポートするように拡張されました。

  • データセットに対してカスタム SQL ステートメントを実行し、その戻り値を指定された式と対応させて確認します。

  • SELECT ステートメントで列名を指定するカスタム SQL ステートメントを実行し、それを何らかの条件と比較して行レベルの結果を取得します。

[Syntax (構文)]

CustomSql <SQL_STATEMENT> <EXPRESSION>
  • SQL_STATEMENT – 二重引用符で囲まれた単一の数値を返す SQL ステートメント。

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: ルール全体の結果を取得するカスタム SQL

このルール例では、データセットのレコード数を取得するための、SQL ステートメントを使用します。その後、このルールは、レコード数が 10 から 20 の間であることを確認します。

CustomSql "select count(*) from primary" between 10 and 20

例: 行レベルの結果を取得するカスタム SQL

このサンプルルールでは、SELECT ステートメントで列名を指定し、それを何らかの条件と比較して行レベルの結果を取得する SQL ステートメントを使用しています。しきい値条件式は、ルール全体が失敗するまでに失敗するレコード数のしきい値を定義します。ルールには条件とキーワードの両方を一緒に含めることはできないことに注意してください。

CustomSql "select Name from primary where Age > 18"

または

CustomSql "select Name from primary where Age > 18" with threshold > 3
重要

primary エイリアスは、評価するデータセットの名前の代替です。コンソールでビジュアル ETL ジョブを使用する場合、primary は常に、EvaluateDataQuality.apply() 変換に渡されている DynamicFrame を表します。 AWS Glue データカタログを使用してテーブルに対してデータ品質タスクを実行する場合、 はテーブルprimaryを表します。

AWS Glue データカタログを使用している場合は、実際のテーブル名を使用することもできます。

CustomSql "select count(*) from database.table" between 10 and 20

複数のテーブルを結合して、異なるデータ要素を比較することもできます。

CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20

AWS Glue ETL では、CustomSQL はデータ品質チェックに失敗したレコードを特定できます。これを機能させるには、データ品質を評価する主テーブルの一部であるレコードを返す必要があります。クエリの一部として返されたレコードは成功と見なされ、返されなかったレコードは不合格と見なされます。

次のルールにより、経過日数が 100 未満のレコードは成功と見なされ、それ以上のレコードは不合格とマークされます。

CustomSql "select id from primary where age < 100"

次の CustomSQL ルールは、レコードの 50% の経過日数が 10 を超えた場合は合格とし、失敗したレコードも特定します。この CustomSQL によって返されたレコードは合格と見なされ、返されなかったレコードは不合格と見なされます。

CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5

メモ: データセットにないレコードを返すと、CustomSQL ルールは失敗します。

DataFreshness

現在の時刻と日付列の値との差を評価して、列内のデータがどの程度新しいかをチェックします。このルールタイプで時間ベースの式を指定することで、列の値を最新に保つことができます。

[Syntax (構文)]

DataFreshness <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされる型: Date

  • EXPRESSION – 時間または日付の数値表現。表現の中では、時間単位を指定する必要があります。

例: データの新しさ

次のルール例では、データの新しさをチェックします。

DataFreshness "Order_Date" <= 24 hours DataFreshness "Order_Date" between 2 days and 5 days

Null 動作

NULL 値がある行では、DataFreshnessルールは失敗します。null 値が原因でルールが失敗した場合、失敗の理由には次の内容が表示されます。

80.00 % of rows passed the threshold

ここで、失敗した行の 20% には、 を含む行が含まれますNULL

次の複合ルールの例は、NULL値を明示的に許可する方法を示しています。

(DataFreshness "Order_Date" <= 24 hours) OR (ColumnValues "Order_Date" = NULL)

DatasetMatch

プライマリデータセットのデータが参照データセットのデータと一致するかをチェックします。これら 2 つのデータセットは、入力されたキー列マッピングを使用して結合されます。これらの列のみでデータが等しいかを確認する場合は、追加の列マッピングを提供できます。を機能DataSetMatchさせるには、結合キーが一意で、NULL (プライマリキーでなければならない) でない必要があります。これらの条件を満たしていないと、「Provided key map not suitable for given data frames」というエラーメッセージが表示されます。一意の結合キーを持つことができない場合は、 などの他のルールタイプを使用して概要データに一致AggregateMatchさせることを検討してください。

[Syntax (構文)]

DatasetMatch <REFERENCE_DATASET_ALIAS> <JOIN CONDITION WITH MAPPING> <OPTIONAL_MATCH_COLUMN_MAPPINGS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS – プライマリデータセットのデータと比較する、参照データセットのエイリアス。

  • KEY_COLUMN_MAPPINGS – データセットのキーとなる列名のカンマ区切りリスト。列名が両方のデータセットで同一でない場合は、-> で区切る必要があります。

  • OPTIONAL_MATCH_COLUMN_MAPPINGS – 特定の列のみでデータの一致を確認したい場合はこのパラメータを指定します。これは、キー列のマッピングと同じ構文を使用します。このパラメータを指定しないと、残りすべての列のデータと照合されます。残りの非キー列は、両方のデータセットで同じ名前を持っている必要があります。

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: ID 列を使用したセットデータセットの照合

次のルール例では、[ID] 列を使用して 2 つのデータセットを結合し、プライマリデータセットの 90% 以上が参照データセットと一致していることを確認します。この場合、すべての列を比較します。

DatasetMatch "reference" "ID" >= 0.9

例: 複数のキー列を使用したセットデータセットの照合

次の例では、プライマリデータセットと参照データセットで、キー列の名前が異なります。ID_1ID_2 は、結合して、プライマリデータセットの複合キーを構成します。ID_ref1ID_ref2 は、結合して、参照データセットの複合キーを構成します。このシナリオでは、特殊な構文を使用して列名を指定できます。

DatasetMatch "reference" "ID_1->ID_ref1,ID_ref2->ID_ref2" >= 0.9

例: 複数のキー列を使用してセットデータセットを照合し、特定の列が一致していることを確認する

この例は、前述の例に基づいています。金額を含む列のみが一致しているかを、確認しようとしています。この列の名前は、プライマリデータセットでは Amount1、参照データセットでは Amount2 です。これらを完全に一致させたいと思います。

DatasetMatch "reference" "ID_1->ID_ref1,ID_ref2->ID_ref2" "Amount1->Amount2" >= 0.9

DistinctValuesCount

列内の異なる値の数を、指定された式に対応させて確認します。

[Syntax (構文)]

DistinctValuesCount <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 列内の異なる値のカウント

次のルール例では、State という名前の列に 3 つ以上の異なる値が含まれていることを確認します。

DistinctValuesCount "State" > 3

動的ルールの例

  • DistinctValuesCount "colA" between avg(last(10))-1 and avg(last(10))+1

  • DistinctValuesCount "colA" <= index(last(10),2) + std(last(5))

Entropy

列のエントロピー値が、特定の式と一致するかどうかを確認します。エントロピーは、メッセージに含まれる情報のレベルを測定します。エントロピーでは、列内の値に関する特定の確率分布に基づき、値を区別するのに必要なビット数を表します。

[Syntax (構文)]

Entropy <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 列のエントロピー

次のルール例では、Feedback という名前の列のエントロピー値が、1 より大きいことを確認します。

Entropy "Star_Rating" > 1

動的ルールの例

  • Entropy "colA" < max(last(10))

  • Entropy "colA" between min(last(10)) and max(last(10))

IsComplete

列のすべての値が完全 (NULL 以外) かどうかをチェックします。

[Syntax (構文)]

IsComplete <COL_NAME>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

例: NULL 値

次の例では、email という名前が付いた列内で、値がすべて NULL 以外であるかどうかをチェックします。

IsComplete "email"

Null 動作

CSV データ形式に関する注意: CSV 列の空白行には複数の動作が表示される場合があります。

  • 列が String型の場合、空白行は空の文字列として認識され、Completenessルールは失敗しません。

  • 列が のような別のデータ型である場合Int、空白行は として認識NULLされ、Completenessルールは失敗します。

IsPrimaryKey

列にプライマリキーが含まれているかどうかを確認します。列内の値がすべて一意であり、かつそれらすべてが完全な (NULL 以外) 場合、その列にはプライマリキーが含まれます。

[Syntax (構文)]

IsPrimaryKey <COL_NAME>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

例; プライマリキー

次のルール例では、Customer_ID という名前の列にプライマリキーが含まれているかどうかを確認します。

IsPrimaryKey "Customer_ID"

例:複数の列を持つ主プライマリキー。以下のいずれの例も有効です。

IsPrimaryKey "colA" "colB" IsPrimaryKey "colA" "colB" "colC" IsPrimaryKey colA "colB" "colC"

IsUnique

列のすべての値が一意であるかどうかをチェックし、ブール型の値を返します。

[Syntax (構文)]

IsUnique <COL_NAME>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

例: 列での一意の値

次のルール例では、email という名前の列で、すべての値が一意であるかどうかをチェックします。

IsUnique "email"

平均値

列内にあるすべての値の mean 値 (平均) が、特定の表現に適合するかどうかを確認します。

[Syntax (構文)]

Mean <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 平均値

次のルール例では、列のすべての値の平均が、しきい値を超えているかどうかを確認します。

Mean "Star_Rating" > 3

動的ルールの例

  • Mean "colA" > avg(last(10)) + std(last(2))

  • Mean "colA" between min(last(5)) - 1 and max(last(5)) + 1

Null 動作

このMeanルールでは、平均値の計算にNULL値が含まれる行は無視されます。例:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

列の平均は (0 + 20 + 40) / 3 = 20 unitsになります。この計算では、行 101 と 103 は考慮されません。

ReferentialIntegrity

プライマリデータセットに存在する一連の列の値が、どの程度、参照データセットの一連の列における値のサブセットになっているかをチェックします。

[Syntax (構文)]

ReferentialIntegrity <PRIMARY_COLS> <REFERENCE_DATASET_COLS> <EXPRESSION>
  • PRIMARY_COLS — プライマリデータセット内の列名のカンマ区切りリスト。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • REFERENCE_DATASET_COLS – このパラメータには、ピリオドで区切られた 2 つの要素が含まれます。前半の部分は、参照データセットのエイリアスです。後半の部分は、中かっこで囲まれた参照データセット内の列名のカンマ区切りリストです。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 郵便番号列の参照整合性の確認

次のルール例では、zipcode 列の値の 90% 以上が reference データセットの zipcode 列にあることを確認します。

ReferentialIntegrity "zipcode" "reference.zipcode" >= 0.9

例: 都市列と州列の参照整合性の確認

次の例では、都市と州の情報を含む列が、プライマリデータセットと参照データセットの中にあります。列の名前は、両方のデータセットで異なっています。このルールは、プライマリデータセットの列の値セットが、参照データセットの列の値セットと完全に等しいかをチェックします。

ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" = 1.0

動的ルールの例

  • ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" > avg(last(10))

  • ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" between min(last(10)) - 1 and max(last(10)) + 1

RowCount

特定の表現を参照しながら、データセットの行数を確認します。この式では、>< などの演算子を使用して、行数または行の範囲を指定します。

[Syntax (構文)]

RowCount <EXPRESSION>
  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 行数の数値による確認

次のルール例では、行数が特定の範囲内にあるかどうかを確認します。

RowCount between 10 and 100

動的ルールの例

RowCount > avg(lats(10)) *0.8

RowCountMatch

プライマリデータセットの行数と参照データセットの行数の比率を、所定の式に照らして確認します。

[Syntax (構文)]

RowCountMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS – 行数の比較に使用する参照データセットのエイリアス。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 参照データセットに対する行数の確認

次のルール例は、プライマリデータセットの行数が、参照データセットの行数の 90% 以上あるかをチェックします。

RowCountMatch "reference" >= 0.9

StandardDeviation

列のすべての値の標準偏差が、特定の表現に適合するかを確認します。

[Syntax (構文)]

StandardDeviation <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 標準偏差

次のルール例では、colA という名前の列内の値の標準偏差が、指定された値より小さいかどうかを確認します。

StandardDeviation "Star_Rating" < 1.5

動的ルールの例

  • StandardDeviation "colA" > avg(last(10) + 0.1

  • StandardDeviation "colA" between min(last(10)) - 1 and max(last(10)) + 1

Null 動作

このStandardDeviationルールでは、標準偏差の計算にNULL値が含まれる行は無視されます。例:

+---+-----------+-----------+ |id |units1 |units2 | +---+-----------+-----------+ |100|0 |0 | |101|null |0 | |102|20 |20 | |103|null |0 | |104|40 |40 | +---+-----------+-----------+

列の標準偏差ではunits1、行 101 と 103 は考慮されず、結果は 16.33 になります。列の標準偏差は 16 units2になります。

Sum

列のすべての値の合計値を、特定の表現を参照しながら確認します。

[Syntax (構文)]

Sum <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 合計

次のルール例では、列のすべての値の合計が、特定のしきい値を超えているかどうかを確認します。

Sum "transaction_total" > 500000

動的ルールの例

  • Sum "ColA" > avg(last(10))

  • Sum "colA" between min(last(10)) - 1 and max(last(10)) + 1

Null 動作

Sum ルールでは、合計の計算にNULL値が含まれる行は無視されます。例:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

列の合計unitsでは、行 101 と 103 は考慮されず、結果は (0 + 20 + 40) = 60 になります。

SchemaMatch

プライマリデータセットのスキーマが参照データセットのスキーマと一致しているかをチェックします。スキーマのチェックは列ごとに行われます。名前と型が同じであれば、2 つの列のスキーマは一致します。行の順序は関係ありません。

[Syntax (構文)]

SchemaMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS – スキーマの比較に使用する参照データセットのエイリアスです。

    列でサポートされている型: Byte (バイト)、Decimal (十進数)、Double (倍精度浮動小数点数)、Float (浮動小数点数)、Integer (整数)、Long (整数)、Short (整数)

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: SchemaMatch

次のルール例は、プライマリデータセットのスキーマが参照データセットのスキーマと厳密に一致しているかをチェックします。

SchemaMatch "reference" = 1.0

Uniqueness

特定の表現と対応させて、列内にある一意の値の個数を、パーセンテージにより確認します。一意の値とは、1 つのみ存在する値です。

[Syntax (構文)]

Uniqueness <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 一意性の割り合い

次のルール例では、列内での一意の値の割合が、特定の数値基準と一致するかどうかを確認します。

Uniqueness "email" = 1.0

動的ルールの例

  • Uniqueness "colA" between min(last(10)) and max(last(10))

  • Uniqueness "colA" >= avg(last(10))

UniqueValueRatio

特定の表現を参照して、列での一意な値の比率をチェックします。個別値の比率は、列内の一意の値の個数を、個別なすべての値の個数で割ったものです。一意の値とは 1 つだけ含まれる値であり、一方、個別の値は少なくとも 1 つ含まれている値です。

例えば、[a, a, b] のセットには 1 つの一意の値 (b) と 2 つの個別の値 (ab) が含まれています。したがって、このセットの一意な値の比率は ½ = 0.5 です。

[Syntax (構文)]

UniqueValueRatio <COL_NAME> <EXPRESSION>
  • COL_NAME – データ品質ルールを評価する対象となる列の名前。

    列でサポートされている型: 任意の型

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: 一意な値の比率

この例では、列の一意な値の比率を、値の範囲と比較します。

UniqueValueRatio "test_score" between 0 and 0.5

動的ルールの例

  • UniqueValueRatio "colA" > avg(last(10))

  • UniqueValueRatio "colA" <= index(last(10),2) + std(last(5))

DetectAnomalies

特定の Deequ ルールの異常を検出します。 DetectAnomalies ルールを実行するたびに、特定のルールの評価値が保存されます。十分なデータが収集されると、異常検出アルゴリズムは特定のルールのすべての履歴データを取得し、異常検出を実行します。異常が検出されると DetectAnomalies 、ルールは失敗します。どのような異常が検出されたかについての詳細は、「観察結果」で確認できます。

[Syntax (構文)]

DetectAnomalies <RULE_NAME> <RULE_PARAMETERS>

RULE_NAME – 異常の評価、検出を希望するルールの名前。サポートされているルール:

  • "RowCount"

  • "Completeness"

  • "Uniqueness"

  • "Mean"

  • "Sum"

  • "StandardDeviation"

  • "Entropy"

  • "DistinctValuesCount"

  • "UniqueValueRatio"

  • "ColumnLength"

  • "ColumnValues"

  • "ColumnCorrelation"

  • "CustomSql"

RULE_PARAMETERS — 一部のルールでは、実行に追加のパラメータが必要です。必要なパラメータについては、該当するルールのドキュメントを参照してください。

例: の異常 RowCount

例えば、 RowCount 異常を検出したい場合は、ルール名 RowCount として を指定します。

DetectAnomalies "RowCount"

例: の異常 ColumnLength

例えば、 ColumnLength 異常を検出したい場合は、ルール名と列名 ColumnLength として を指定します。

DetectAnomalies "ColumnLength" "id"