Data Quality は、Spec の作成を簡素化するためのルールテンプレートを提供します。システムには一般的な組み込みテンプレートのセットが含まれているほか、独自のカスタムテンプレートも作成できます。テンプレートには必要な Spec 設定のほとんどが含まれているため、テンプレートからルールを作成する際は、残りの設定を行うだけで済みます。
システムルールテンプレートの使用
次の例では、1、7、30 日間の平均ボラティリティのシステムルールテンプレートを使用してルールを作成する方法を説明します。
datasets:
- type: Table
tables:
- tb_d_spec_demo
filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'"
dataSource:
name: odps_first
envType: Dev
rules:
- templateId: "SYSTEM:field:avg:flux:1_7_1m_bizdate"
fields:
- col_income
warn: "when > 1%"
fail: "when > 10%"上記のコードスニペットは、1、7、30 日間の平均ボラティリティのシステムルールテンプレートを参照して Data Quality のモニタリングルールを作成するものです。パラメーターは次のように設定します。
templateId:ルールテンプレートのIDです。その他のルールテンプレート ID については、「システムルールテンプレート一覧」をご参照ください。また、カスタムルールテンプレートを作成し、「カスタムテンプレートを使用したルールの作成」を参照してルールを作成することも可能です。templateParameters:ルールテンプレートが必要とするパラメーターです。テンプレートによって必要なパラメーターは異なります。共通のパラメーターはfieldsで、ルールがモニタリングするフィールドのリストを指定します。各ルールテンプレートで必要なパラメーターについては、「システムルールテンプレート一覧」をご参照ください。
warn/fail:しきい値です。
カスタムルールテンプレートの使用
システムルールテンプレートがニーズを満たさない場合や、同じ SQL ステートメントを含むカスタム SQL ルールが多数ある場合は、カスタムルールテンプレートを作成できます。
カスタムテンプレートの定義
次のコードスニペットは、カスタムルールテンプレートの Spec 構成の例を示しています。
name: "Check for non-empty ID row count"
id: "1760d075-00bd-43c9-be8f-3c9a4bac35db"
assertion: "id_not_null_row_count = 0"
id_not_null_row_count:
query: "SELECT COUNT(*) FROM ${table} WHERE dt = '$[yyyymmdd-1]';"
catalog: "ods_layer/real-time_check"上記のコードスニペットは、単純なカスタムルールテンプレートを定義しています。これには次のフィールドが含まれます。
name:テンプレート名です。id:テンプレートの一意の識別子です。この ID はグローバルに一意である必要があり、テンプレートを参照するために使用されます。assertion:ルールのロジックです。構文の詳細については、「Data Quality Spec の構成」のassertionフィールドをご参照ください。id_not_null_row_count: この例のassertionで参照されるmetricの定義です。queryでは、テーブル名のプレースホルダーとして${tableName}を使用できます。このルールテンプレートからルールを作成すると、このプレースホルダーは、ルールがモニターするテーブルの名前に置き換えられます。システム時間パラメーターを直接参照することもできます。詳細については、「データフィルタリング構成」をご参照ください。catalog:ルールテンプレートのカテゴリで、管理に使用されます。スラッシュ (/) を使用して、複数レベルのカテゴリを区切ります。
カスタムテンプレートでのしきい値設定
固定しきい値と非固定しきい値
次のコードスニペットは、非固定しきい値を持つ構成の例を示しています。
name: "Check for non-empty ID row count"
id: "1760d075-00bd-43c9-be8f-3c9a4bac35db"
assertion: "id_not_null_row_count"
id_not_null_row_count:
query: "SELECT COUNT(*) FROM ${table} WHERE dt = '$[yyyymmdd-1]';"ボラティリティしきい値
name: "Check for non-empty ID row count"
id: "1760d075-00bd-43c9-be8f-3c9a4bac35db"
assertion: "change avg last 7 days percent for id_not_null_row_count"
id_not_null_row_count:
query: "SELECT COUNT(*) FROM ${table} WHERE dt = '$[yyyymmdd-1]';"カスタムテンプレートを使用したルールの作成
例 1
datasets: - type: Table tables: - tb_d_spec_demo filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'" dataSource: name: odps_first envType: Dev rules: - templateId: "1760d075-00bd-43c9-be8f-3c9a4bac35db" # Defines the failure threshold fail: "when != 0"例 2
datasets: - type: Table tables: - tb_d_spec_demo filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'" dataSource: name: odps_first envType: Dev rules: - templateId: "1760d075-00bd-43c9-be8f-3c9a4bac35db" warn: "when between 1 and 10)" fail: "when > 10"例 3
datasets: - type: Table tables: - tb_d_spec_demo filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'" dataSource: name: odps_first envType: Dev rules: - templateId: "1760d075-00bd-43c9-be8f-3c9a4bac35db" warn: "when not between -1% and 1%" fail: "when not between -10% and 10%"
システムルールテンプレート一覧
ID | テンプレート | 必須フィールド | 例 |
| テーブルの行数、固定値 |
| |
| テーブルの行数が 0 より大きい | - | |
| テーブルの行数、1 日の差分 |
| |
| テーブルの行数、前のエポックとの差分 |
| |
| テーブルの行数、1、7、30 日間のボラティリティレート |
| |
| テーブルの行数、1、7、30 日間および月初日のボラティリティレート |
| |
| テーブルの行数、1 日のボラティリティレート |
| |
| テーブルの行数、30 日間のボラティリティレート |
| |
| テーブルの行数、7 日間のボラティリティレート |
| |
| テーブルの行数、動的しきい値 | - | |
| テーブルの行数、7 日間の平均ボラティリティレート |
| |
| テーブルの行数、30 日間の平均ボラティリティレート |
| |
| テーブルの行数、前のエポックからのボラティリティレート |
| |
| テーブルサイズ、固定値 |
| |
| テーブルサイズ、1 日の差分 (バイト) |
| |
| テーブルサイズ、前のエポックとの差分 |
| |
| テーブルサイズ、1 日のボラティリティレート |
| |
| テーブルサイズ、30 日間のボラティリティレート |
| |
| テーブルサイズ、7 日間のボラティリティレート |
| |
| テーブルサイズ、動的しきい値 | - | |
| NULL 値の数、固定値 |
| |
| NULL 値の数が 0 |
| |
| NULL 値の割合、固定値 |
| |
| 正規表現チェック |
| |
| 日付形式チェック |
| |
| メール形式チェック |
| |
| ID カード形式チェック |
| |
| 携帯電話番号形式チェック |
| |
| 通貨形式チェック |
| |
| 数値形式チェック |
| |
| 電話番号形式チェック |
| |
| 重複値の数、固定値 |
| |
| 重複値の数が 0 |
| |
| 複数フィールドの重複値の数が 0 |
| |
| 重複値の割合、固定値 |
| |
| 一意の値の数、固定値 |
| |
| 一意の値の数、1、7、30 日間のボラティリティレート |
| |
| 一意の値の数、動的しきい値 |
| |
| 一意の値の割合、固定値 |
| |
| 最小値、1、7、30 日間のボラティリティレート |
| |
| 最小値、動的しきい値 |
| |
| 最小値、1 日のボラティリティレート |
| |
| 最小値、前のエポックからのボラティリティレート |
| |
| 最小値、1、7、30 日間のボラティリティレート |
| |
| 最大値、動的しきい値 |
| |
| 最大値、1 日のボラティリティレート |
| |
| 最大値、前のエポックからのボラティリティレート |
| |
| 平均値、1、7、30 日間のボラティリティレート |
| |
| 平均値、動的しきい値 |
| |
| 平均値、1 日のボラティリティレート |
| |
| 合計、1、7、30 日間のボラティリティレート |
| |
| 合計、動的しきい値 |
| |
| 合計、1 日のボラティリティレート |
| |
| 合計、前のエポックからのボラティリティレート |
| |
| 列挙に含まれない一意の値の数、固定値 |
| |
| 列挙に含まれない値を持つ行数、固定値 |
| |
| 列挙に含まれない値を持つ行数が 0 |
| |
| カスタム列挙チェック、固定値 |
| |
| 離散ステータス値の数、固定値 |
| |
| 離散グループの数、固定値 |
| |
| 離散グループの数、動的しきい値 |
| |
| 離散ステータス値の数、動的しきい値 |
| |
| 離散グループの数、前のエポックからのボラティリティレート |
| |
| 離散メトリック (グループと値)、1、7、30 日間のボラティリティレート |
| |
付録:カスタム範囲システムテンプレートの設定手順
以下のカスタム範囲システムテンプレートは、標準のシステムテンプレートとは設定方法が異なり、個別の設定が必要です。
条件付き一致率、カスタム範囲
rules: - assertion: "matched_row_percent = 0" filter: "id IS NULL"フィールドの最小値、カスタム範囲
rules: - assertion: "anomal detection for min(income)"フィールドの最大値、カスタム範囲
rules: - assertion: "change avg last 7 days percent for max(income)" warn: "when > 0.1%" fail: "when > 0.5%"フィールドの平均値、カスタム範囲
rules: - assertion: "change var last 30 days percent for avg(income)" warn: "when < -0.1%" fail: "when < -0.5%"フィールドの合計、カスタム範囲
rules: - assertion: "change 1 days ago percent for sum(income)" warn: "when not between -0.1% and 0.1%" fail: "when not between -0.5% and 0.5%"Custom SQL
assertionパラメーターについては、「カスタムメトリックルールの定義」をご参照ください。rules: - assertion: "change percent for id_not_null_count" id_not_null_count: query: "SELECT COUNT(*) AS cnt FROM tb_spec_demo WHERE dt = '$[yyyymmdd]'" warn: "when not between -0.1% and 0.1%" fail: "when not between -0.5% and 0.5%"