すべてのプロダクト
Search
ドキュメントセンター

DataWorks:ルールテンプレート

最終更新日:Dec 11, 2025

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 number of rows with non-null ID"
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 number of rows with non-null ID"
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 number of rows with non-null ID"
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"
        # fail を使用して失敗のしきい値を定義します
        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"
  • 例 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 not between -1% and 1%"
        fail: "when not between -10% and 10%"

システムルールテンプレートリスト

Id

テンプレート

必須フィールド

SYSTEM:table:table_count:fixed

テーブル行数、静的フィールド

pass

templateId: "SYSTEM:table:table_count:fixed"
pass: "when > 0"

SYSTEM:table:table_count:fixed:0

テーブル行数が 0 より大きい

-

templateId: "SYSTEM:table:table_count:fixed:0"

SYSTEM:table:table_count_delta:fixed:1_bizdate

テーブル行数、1 日差分

pass

templateId: "SYSTEM:table:table_count_delta:fixed:1_bizdate"
pass: "when < 10"

SYSTEM:table:table_count_delta:fixed:latest_bizdate

テーブル行数、前のエポックとの差分

pass

templateId: "SYSTEM:table:table_count_delta:fixed:latest_bizdate"
pass: "when < 10"

SYSTEM:table:table_count:flux:1_7_1m_bizdate

テーブル行数、1、7、30 日間のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:flux:1_7_1m_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_count:flux:1_7_1m_1st_bizdate

テーブル行数、1、7、30 日間、および月初日のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:flux:1_7_1m_1st_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_count:flux:1_bizdate

テーブル行数、1 日のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:flux:1_bizdate"
warn: "when < -1%"
fail: "when < -5%"

SYSTEM:table:table_count:flux:1m_bizdate

テーブル行数、30 日間のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:flux:1m_bizdate"
warn: "when < -1%"
fail: "when < -5%"

SYSTEM:table:table_count:flux:7_bizdate

テーブル行数、7 日間のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:flux:7_bizdate"
warn: "when < -1%"
fail: "when < -5%"

SYSTEM:table:table_count:dynamic_threshold

テーブル行数、動的しきい値

-

templateId: "SYSTEM:table:table_count:dynamic_threshold"

SYSTEM:table:table_count:avg:7_bizdate

テーブル行数、7 日間の平均ボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:avg:7_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_count:avg:1m_bizdate

テーブル行数、30 日間の平均ボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:avg:1m_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_count:cycle:latest_bizdate

テーブル行数、前のエポックのボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_count:cycle:latest_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_size:fixed

テーブルサイズ、静的フィールド

pass

templateId: "SYSTEM:table:table_size:fixed"
pass: "when > 0"

SYSTEM:table:table_size_delta:fixed:1_bizdate

テーブルサイズ、1 日前との差分 (バイト)

pass

templateId: "SYSTEM:table:table_size_delta:fixed:1_bizdate"
pass: "when > 0"

SYSTEM:table:table_size_delta:fixed:latest_bizdate

テーブルサイズ、前のエポックとの差分

pass

templateId: "SYSTEM:table:table_size_delta:fixed:latest_bizdate"
pass: "when > 0"

SYSTEM:table:table_size:flux:1_bizdate

テーブルサイズ、1 日のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_size:flux:1_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_size:flux:1m_bizdate

テーブルサイズ、30 日間のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_size:flux:1m_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_size:flux:7_bizdate

テーブルサイズ、7 日間のボラティリティ率

  • warn

  • fail

templateId: "SYSTEM:table:table_size:flux:7_bizdate"
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:table_size:dynamic_threshold

テーブルサイズ、動的しきい値

-

templateId: "SYSTEM:table:table_size:dynamic_threshold"

SYSTEM:field:null_value:fixed

NULL 値の数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:null_value:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:null_value:fixed:0

NULL レコード数が 0

fields

templateId: "SYSTEM:field:null_value:fixed:0"
fields:
  - id

SYSTEM:field:null_value_percent:fixed

NULL 値の数/総行数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:null_value_percent:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:pattern_match:fixed

正規表現チェック

  • fields

  • valid

    • regex

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match:fixed"
templateParameters:
  metric: invalid_distinct_count
fields:
  - id
valid:
  regex: "[0-9]+"
pass: "when > 0"

SYSTEM:field:pattern_match_date:fixed

日付フォーマットチェック

  • fields

  • valid

    • format

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_date:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
valid:
  format: date_yyyymmdd
pass: "when > 0"

SYSTEM:field:pattern_match_email:fixed

メールフォーマットチェック

  • fields

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_email:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
pass: "when > 0"

SYSTEM:field:pattern_match_idcard:fixed

ID カードフォーマットチェック

  • fields

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_idcard:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
pass: "when > 0"

SYSTEM:field:pattern_match_mobile_number:fixed

携帯電話番号フォーマットチェック

  • fields

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_mobile_number:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
pass: "when > 0"

SYSTEM:field:pattern_match_money:fixed

通貨フォーマットチェック

  • fields

  • valid

    • format

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_money:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
valid:
  format: CNY
pass: "when > 0"

SYSTEM:field:pattern_match_number:fixed

数値フォーマットチェック

  • fields

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_number:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
pass: "when > 0"

SYSTEM:field:pattern_match_phone_number:fixed

電話番号フォーマットチェック

  • fields

  • templateParameters

    • metric

  • pass

templateId: "SYSTEM:field:pattern_match_phone_number:fixed"
templateParameters:
  metric: invalid_count
fields:
  - id
pass: "when > 0"

SYSTEM:field:duplicated_count:fixed

重複値の数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:duplicated_count:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:duplicated_count:fixed:0

フィールドに重複値が 0

fields

templateId: "SYSTEM:field:duplicated_count:fixed:0"
fields:
  - id

SYSTEM:fields:duplicated_count:fixed:0

複数フィールドに重複値が 0

fields

templateId: "SYSTEM:fields:duplicated_count:fixed:0"
fields:
  - id
  - name

SYSTEM:field:duplicated_percent:fixed

重複値の数/総行数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:duplicated_percent:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:count_distinct:fixed

一意の値の数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:count_distinct:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:count_distinct:flux:1_7_1m_bizdate

一意の値の数、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:count_distinct:flux:1_7_1m_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:table:distinct_count:dynamic_threshold

一意の値の数、動的しきい値

  • fields

  • pass

templateId: "SYSTEM:table:distinct_count:dynamic_threshold"
fields:
  - id

SYSTEM:field:count_distinct_percent:fixed

一意の値の数/総行数、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:count_distinct_percent:fixed"
fields:
  - id
pass: "when > 0"

SYSTEM:field:min:flux:1_7_1m_bizdate

最小値、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:min:flux:1_7_1m_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:min:dynamic_threshold

最小値、動的しきい値

fields

templateId: "SYSTEM:field:min:dynamic_threshold"
fields:
  - id

SYSTEM:field:min:cycle:1_bizdate

最小値、1 日のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:min:cycle:1_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:min:cycle:latest_bizdate

最小値、前のエポックのボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:min:cycle:latest_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:min:flux:1_7_1m_bizdate

最大値、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:min:flux:1_7_1m_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:max:dynamic_threshold

最大値、動的しきい値

fields

templateId: "SYSTEM:field:max:dynamic_threshold"
fields:
  - id

SYSTEM:field:max:cycle:1_bizdate

最大値、1 日のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:max:cycle:1_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:max:cycle:latest_bizdate

最大値、前のエポックのボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:max:cycle:latest_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:avg:flux:1_7_1m_bizdate

平均値、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:avg:flux:1_7_1m_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:avg:dynamic_threshold

平均値、動的しきい値

fields

templateId: "SYSTEM:field:avg:dynamic_threshold"
fields:
  - id

SYSTEM:field:avg:cycle:1_bizdate

平均値、1 日のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:avg:cycle:1_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:sum:flux:1_7_1m_bizdate

合計、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:sum:flux:1_7_1m_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:sum:dynamic_threshold

合計、動的しきい値

fields

templateId: "SYSTEM:field:avg:dynamic_threshold"
fields:
  - id

SYSTEM:field:sum:cycle:1_bizdate

合計、1 日のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:sum:cycle:1_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:sum:cycle:latest_bizdate

合計、前のエポックのボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:sum:cycle:latest_bizdate"
fields:
  - id
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:count_distinct_not_in:fixed

列挙に一致しない一意の値の数、静的フィールド

  • fields

  • valid

    • values

  • pass

templateId: "SYSTEM:field:count_distinct_not_in:fixed"
fields:
  - gender
valid:
  values:
    - male
    - female
pass: "when = 0"

SYSTEM:field:count_not_in:fixed

列挙に一致しない行数、静的フィールド

  • fields

  • valid

    • values

  • pass

templateId: "SYSTEM:field:count_not_in:fixed"
fields:
  - gender
valid:
  values:
    - male
    - female
pass: "when = 0"

SYSTEM:field:count_not_in:fixed:0

列挙に一致しない行数が 0

  • fields

  • valid

    • values

templateId: "SYSTEM:field:count_not_in:fixed"
fields:
  - gender
valid:
  values:
    - male
    - female

SYSTEM:field:field_enum:fixed

列挙値、カスタム、静的フィールド

  • fields

  • valid

    • values

  • templateParameters

    • metirc

  • pass

templateId: "SYSTEM:field:count_not_in:fixed"
templateParameters:
  metric: invalid_count
fields:
  - gender
valid:
  values:
    - male
    - female
pass: "when > 0"

SYSTEM:field:all_discrete_count:fixed

離散値 (ステータス値)、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:all_discrete_count:fixed"
fields:
  - gender
pass: "when > 0"

SYSTEM:field:discrete_group_count:fixed

離散値 (グループ数)、静的フィールド

  • fields

  • pass

templateId: "SYSTEM:field:discrete_group_count:fixed"
fields:
  - gender
pass: "when > 0"

SYSTEM:field:discrete_group_count:dynamic_threshold

離散値 (グループ数)、動的しきい値

fields

templateId: "SYSTEM:field:discrete_group_count:dynamic_threshold"
fields:
  - gender

SYSTEM:field:discrete_value_count:dynamic_threshold

離散値 (ステータス値)、動的しきい値

fields

templateId: "SYSTEM:field:discrete_value_count:dynamic_threshold"
fields:
  - gender

SYSTEM:field:discrete_group_count:cycle:latest_bizdate

離散値 (グループ数)、1 日のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:discrete_group_count:cycle:latest_bizdate"
fields:
  - gender
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

SYSTEM:field:all_discrete_metrics:fluxdiscrete:1_7_1m_bizdate

離散値 (グループ数とステータス値)、1、7、30 日間のボラティリティ率

  • fields

  • warn

  • fail

templateId: "SYSTEM:field:all_discrete_metrics:fluxdiscrete:1_7_1m_bizdate"
fields:
  - gender
warn: "when not between -5% and 5%"
fail: "when not between -10% and 10%"

付録: カスタム範囲システムテンプレートの構成手順

次のカスタム範囲システムテンプレートは、標準のシステムテンプレートとは構成が異なり、個別の構成が必要です。

  • 条件付き一致率、カスタム範囲

    rules:
      - assertion: "matched_row_percent = 0"
        filter: "id IS NULL"
  • フィールド最小値、カスタム範囲

    rules:
      - assertion: "anomal detection for min(income)"
  • フィールド最大値、カスタム範囲

    rules:
      - assertion: "max(income) の過去 7 日間の平均変化率"
        warn: "> 0.1% の場合"
        fail: "> 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%"
  • カスタム 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%"