Todos os produtos
Search
Central de documentação

DataWorks:Modelos de regras

Última atualização: Jun 30, 2026

O Data Quality oferece modelos de regras para simplificar a criação de Specs. O sistema inclui um conjunto de modelos internos comuns, mas também é possível criar modelos personalizados. Como os modelos contêm a maioria das configurações necessárias para a Spec, ao criar uma regra com base em um modelo, configure apenas as definições restantes.

Uso de modelos de regras do sistema

O exemplo a seguir mostra como crie uma regra usando o modelo de regra do sistema 1, 7, and 30-day average volatility:

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%"

O trecho de código anterior cria uma regra de monitoramento do Data Quality referenciando o modelo de regra do sistema 1, 7, and 30-day average volatility. Os parâmetros são configurados da seguinte forma:

  • templateId: O ID do modelo de regra. Para obter mais IDs de modelos de regras, consulte a Lista de modelos de regras do sistema. Também é possível criar um modelo de regra personalizado; nesse caso, consulte Uso de um modelo de regra personalizado para crie a regra.

  • templateParameters: Os parâmetros exigidos pelo modelo de regra. Cada modelo exige parâmetros específicos. Um parâmetro comum é fields, que especifica a lista de campos monitorados pela regra.

    Para verificar os parâmetros necessários para cada modelo de regra, consulte a Lista de modelos de regras do sistema.

  • warn/fail: Os limiares.

Uso de modelos de regras personalizados

Caso os modelos de regras do sistema não atendam às suas necessidades ou se houver muitas regras SQL personalizadas com as mesmas instruções, crie modelos de regras personalizados.

Definição de um modelo personalizado

O trecho de código a seguir apresenta um exemplo de configuração de Spec para um modelo de regra personalizado:

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"

O trecho de código anterior defina um modelo de regra personalizado simples composto pelos seguintes campos:

  • name: O nome do modelo.

  • id: O identificador exclusivo do modelo. Este ID deve ser globalmente único e serve para referenciar o modelo.

  • assertion: A lógica da regra. Para mais informações sobre a sintaxe, consulte o campo assertion em Configuração de Spec do Data Quality.

    id_not_null_row_count: A definição da metric referenciada pela assertion neste exemplo. Na query, use ${tableName} como espaço reservado para o nome da tabela. Ao criar uma regra a partir deste modelo, esse espaço reservado será substituído pelo nome da tabela monitorada. Também é possível referenciar diretamente parâmetros de hora do sistema. Para mais informações, consulte Configuração de filtragem de dados.

  • catalog: A categoria do modelo de regra, utilizada para gerenciamento. Use uma barra (/) para separar vários níveis de categorias.

Definições de limiar em modelos personalizados

Limiares fixos e não fixos

O trecho de código abaixo ilustra uma configuração com limiar não fixo:

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]';"

Limiares de volatilidade

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]';"

Criação de uma regra usando um modelo personalizado

  • Exemplo 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"
  • Exemplo 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"
  • Exemplo 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%"

Lista de modelos de regras do sistema

Id

Template

Required fields

Example

SYSTEM:table:table_count:fixed

Contagem de linhas da tabela, valor fixo

pass

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

SYSTEM:table:table_count:fixed:0

Contagem de linhas da tabela maior que 0

-

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

SYSTEM:table:table_count_delta:fixed:1_bizdate

Contagem de linhas da tabela, diferença de 1 dia

pass

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

SYSTEM:table:table_count_delta:fixed:latest_bizdate

Contagem de linhas da tabela, diferença em relação à época anterior

pass

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

SYSTEM:table:table_count:flux:1_7_1m_bizdate

Contagem de linhas da tabela, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Contagem de linhas da tabela, taxa de volatilidade de 1, 7, 30 dias e primeiro dia do mês

  • 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

Contagem de linhas da tabela, taxa de volatilidade de 1 dia

  • warn

  • fail

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

SYSTEM:table:table_count:flux:1m_bizdate

Contagem de linhas da tabela, taxa de volatilidade de 30 dias

  • warn

  • fail

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

SYSTEM:table:table_count:flux:7_bizdate

Contagem de linhas da tabela, taxa de volatilidade de 7 dias

  • warn

  • fail

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

SYSTEM:table:table_count:dynamic_threshold

Contagem de linhas da tabela, limiar dinâmico

-

templateId: "SYSTEM:table:table_count:dynamic_threshold"

SYSTEM:table:table_count:avg:7_bizdate

Contagem de linhas da tabela, taxa de volatilidade média de 7 dias

  • 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

Contagem de linhas da tabela, taxa de volatilidade média de 30 dias

  • 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

Contagem de linhas da tabela, taxa de volatilidade em relação à época anterior

  • 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

Tamanho da tabela, valor fixo

pass

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

SYSTEM:table:table_size_delta:fixed:1_bizdate

Tamanho da tabela, diferença de 1 dia (bytes)

pass

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

SYSTEM:table:table_size_delta:fixed:latest_bizdate

Tamanho da tabela, diferença em relação à época anterior

pass

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

SYSTEM:table:table_size:flux:1_bizdate

Tamanho da tabela, taxa de volatilidade de 1 dia

  • 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

Tamanho da tabela, taxa de volatilidade de 30 dias

  • 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

Tamanho da tabela, taxa de volatilidade de 7 dias

  • 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

Tamanho da tabela, limiar dinâmico

-

templateId: "SYSTEM:table:table_size:dynamic_threshold"

SYSTEM:field:null_value:fixed

Contagem de valores nulos, valor fixo

  • fields

  • pass

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

SYSTEM:field:null_value:fixed:0

A contagem de valores nulos é 0

fields

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

SYSTEM:field:null_value_percent:fixed

Porcentagem de valores nulos, valor fixo

  • fields

  • pass

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

SYSTEM:field:pattern_match:fixed

Verificação de expressão regular

  • 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

Verificação de formato de data

  • 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

Verificação de formato de e-mail

  • 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

Verificação de formato de documento de identidade

  • 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

Verificação de formato de número de celular

  • 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

Verificação de formato de moeda

  • 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

Verificação de formato numérico

  • 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

Verificação de formato de número de telefone

  • 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

Contagem de valores duplicados, valor fixo

  • fields

  • pass

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

SYSTEM:field:duplicated_count:fixed:0

A contagem de valores duplicados é 0

fields

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

SYSTEM:fields:duplicated_count:fixed:0

A contagem de valores duplicados para vários campos é 0

fields

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

SYSTEM:field:duplicated_percent:fixed

Porcentagem de valores duplicados, valor fixo

  • fields

  • pass

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

SYSTEM:field:count_distinct:fixed

Contagem de valores únicos, valor fixo

  • fields

  • pass

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

SYSTEM:field:count_distinct:flux:1_7_1m_bizdate

Contagem de valores únicos, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Contagem de valores únicos, limiar dinâmico

  • fields

  • pass

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

SYSTEM:field:count_distinct_percent:fixed

Porcentagem de valores únicos, valor fixo

  • fields

  • pass

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

SYSTEM:field:min:flux:1_7_1m_bizdate

Valor mínimo, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Valor mínimo, limiar dinâmico

fields

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

SYSTEM:field:min:cycle:1_bizdate

Valor mínimo, taxa de volatilidade de 1 dia

  • 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

Valor mínimo, taxa de volatilidade em relação à época anterior

  • 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

Valor mínimo, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Valor máximo, limiar dinâmico

fields

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

SYSTEM:field:max:cycle:1_bizdate

Valor máximo, taxa de volatilidade de 1 dia

  • 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

Valor máximo, taxa de volatilidade em relação à época anterior

  • 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

Valor médio, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Valor médio, limiar dinâmico

fields

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

SYSTEM:field:avg:cycle:1_bizdate

Valor médio, taxa de volatilidade de 1 dia

  • 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

Soma, taxa de volatilidade de 1, 7 e 30 dias

  • 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

Soma, limiar dinâmico

fields

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

SYSTEM:field:sum:cycle:1_bizdate

Soma, taxa de volatilidade de 1 dia

  • 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

Soma, taxa de volatilidade em relação à época anterior

  • 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

Contagem de valores únicos fora da enumeração, valor fixo

  • 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

Contagem de linhas com valores fora da enumeração, valor fixo

  • 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

A contagem de linhas com valores fora da enumeração é 0

  • fields

  • valid

    • values

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

SYSTEM:field:field_enum:fixed

Verificação de enumeração personalizada, valor fixo

  • fields

  • valid

    • values

  • templateParameters

    • metirc

  • pass

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

SYSTEM:field:all_discrete_count:fixed

Contagem de valores de status discretos, valor fixo

  • fields

  • pass

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

SYSTEM:field:discrete_group_count:fixed

Contagem de grupos discretos, valor fixo

  • fields

  • pass

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

SYSTEM:field:discrete_group_count:dynamic_threshold

Contagem de grupos discretos, limiar dinâmico

fields

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

SYSTEM:field:discrete_value_count:dynamic_threshold

Contagem de valores de status discretos, limiar dinâmico

fields

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

SYSTEM:field:discrete_group_count:cycle:latest_bizdate

Contagem de grupos discretos, taxa de volatilidade em relação à época anterior

  • 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

Métricas discretas (grupos e valores), taxa de volatilidade de 1, 7 e 30 dias

  • 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%"

Apêndice: Instruções de configuração para modelos do sistema de intervalo personalizado

Os modelos do sistema de intervalo personalizado listados abaixo possuem configurações diferentes dos modelos padrão e exigem ajustes específicos.

  • Porcentagem de correspondência condicional, intervalo personalizado

    rules:
      - assertion: "matched_row_percent = 0"
        filter: "id IS NULL"
  • Valor mínimo do campo, intervalo personalizado

    rules:
      - assertion: "anomal detection for min(income)"
  • Valor máximo do campo, intervalo personalizado

    rules:
      - assertion: "change avg last 7 days percent for max(income)"
        warn: "when > 0.1%"
        fail: "when > 0.5%"
  • Valor médio do campo, intervalo personalizado

    rules:
      - assertion: "change var last 30 days percent for avg(income)"
        warn: "when < -0.1%"
        fail: "when < -0.5%"
  • Soma do campo, intervalo personalizado

    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

    Para o parâmetro assertion, consulte Definir regras de métrica personalizadas .
    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%"