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: OIDdo 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 campoassertionem Configuração de Spec do Data Quality.id_not_null_row_count: A definição dametricreferenciada pelaassertionneste exemplo. Naquery, 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 |
|
|
Contagem de linhas da tabela, valor fixo |
|
|
|
|
Contagem de linhas da tabela maior que 0 |
- |
|
|
|
Contagem de linhas da tabela, diferença de 1 dia |
|
|
|
|
Contagem de linhas da tabela, diferença em relação à época anterior |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade de 1, 7, 30 dias e primeiro dia do mês |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade de 1 dia |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade de 30 dias |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade de 7 dias |
|
|
|
|
Contagem de linhas da tabela, limiar dinâmico |
- |
|
|
|
Contagem de linhas da tabela, taxa de volatilidade média de 7 dias |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade média de 30 dias |
|
|
|
|
Contagem de linhas da tabela, taxa de volatilidade em relação à época anterior |
|
|
|
|
Tamanho da tabela, valor fixo |
|
|
|
|
Tamanho da tabela, diferença de 1 dia (bytes) |
|
|
|
|
Tamanho da tabela, diferença em relação à época anterior |
|
|
|
|
Tamanho da tabela, taxa de volatilidade de 1 dia |
|
|
|
|
Tamanho da tabela, taxa de volatilidade de 30 dias |
|
|
|
|
Tamanho da tabela, taxa de volatilidade de 7 dias |
|
|
|
|
Tamanho da tabela, limiar dinâmico |
- |
|
|
|
Contagem de valores nulos, valor fixo |
|
|
|
|
A contagem de valores nulos é 0 |
|
|
|
|
Porcentagem de valores nulos, valor fixo |
|
|
|
|
Verificação de expressão regular |
|
|
|
|
Verificação de formato de data |
|
|
|
|
Verificação de formato de e-mail |
|
|
|
|
Verificação de formato de documento de identidade |
|
|
|
|
Verificação de formato de número de celular |
|
|
|
|
Verificação de formato de moeda |
|
|
|
|
Verificação de formato numérico |
|
|
|
|
Verificação de formato de número de telefone |
|
|
|
|
Contagem de valores duplicados, valor fixo |
|
|
|
|
A contagem de valores duplicados é 0 |
|
|
|
|
A contagem de valores duplicados para vários campos é 0 |
|
|
|
|
Porcentagem de valores duplicados, valor fixo |
|
|
|
|
Contagem de valores únicos, valor fixo |
|
|
|
|
Contagem de valores únicos, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Contagem de valores únicos, limiar dinâmico |
|
|
|
|
Porcentagem de valores únicos, valor fixo |
|
|
|
|
Valor mínimo, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Valor mínimo, limiar dinâmico |
|
|
|
|
Valor mínimo, taxa de volatilidade de 1 dia |
|
|
|
|
Valor mínimo, taxa de volatilidade em relação à época anterior |
|
|
|
|
Valor mínimo, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Valor máximo, limiar dinâmico |
|
|
|
|
Valor máximo, taxa de volatilidade de 1 dia |
|
|
|
|
Valor máximo, taxa de volatilidade em relação à época anterior |
|
|
|
|
Valor médio, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Valor médio, limiar dinâmico |
|
|
|
|
Valor médio, taxa de volatilidade de 1 dia |
|
|
|
|
Soma, taxa de volatilidade de 1, 7 e 30 dias |
|
|
|
|
Soma, limiar dinâmico |
|
|
|
|
Soma, taxa de volatilidade de 1 dia |
|
|
|
|
Soma, taxa de volatilidade em relação à época anterior |
|
|
|
|
Contagem de valores únicos fora da enumeração, valor fixo |
|
|
|
|
Contagem de linhas com valores fora da enumeração, valor fixo |
|
|
|
|
A contagem de linhas com valores fora da enumeração é 0 |
|
|
|
|
Verificação de enumeração personalizada, valor fixo |
|
|
|
|
Contagem de valores de status discretos, valor fixo |
|
|
|
|
Contagem de grupos discretos, valor fixo |
|
|
|
|
Contagem de grupos discretos, limiar dinâmico |
|
|
|
|
Contagem de valores de status discretos, limiar dinâmico |
|
|
|
|
Contagem de grupos discretos, taxa de volatilidade em relação à época anterior |
|
|
|
|
Métricas discretas (grupos e valores), taxa de volatilidade de 1, 7 e 30 dias |
|
|
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%"