Use regras de métrica personalizada quando os tipos de métrica integrados não atenderem à sua lógica de negócios. Defina a consulta SQL da métrica diretamente na configuração da regra e referencie-a pelo nome na asserção.
Definir uma regra de métrica personalizada
No campo assertion, escreva uma condição com o nome de métrica personalizada desejado. Em seguida, no mesmo bloco de regra, adicione uma chave correspondente a esse nome e informe a consulta SQL em query.
datasets:
- type: Table
tables:
- tb_d_spec_demo
filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'"
dataSource:
name: odps_first
envType: Dev
rules:
- assertion: "avg_order_span between 5 and 10"
avg_order_span:
query: "SELECT COUNT(safety_stock_level - days_to_manufacture) FROM dim_product;"
O nome da métrica personalizada avg_order_span aparece duas vezes e desempenha dois papéis:
|
Função |
Localização |
Finalidade |
|
Operando da asserção |
|
Define o limiar de aprovação ou falha |
|
Chave de configuração |
|
Vincula a consulta SQL à métrica |
O DataWorks executa a consulta SQL para gerar um valor e avalia se ele satisfaz a condição da asserção. Em caso positivo, a verificação é aprovada.
Armazenar linhas com falha em regras de métrica personalizada
Para reter as linhas que causaram falha na verificação e permitir inspeção posterior, defina collectFailedRows: true e adicione uma failedRowsQuery.
Esses dois campos têm finalidades distintas: query calcula o valor da métrica usado na asserção, enquanto failedRowsQuery busca as linhas reais para armazenamento como amostras. Ambos são obrigatórios para reter dados com falha.
datasets:
- type: Table
tables:
- tb_d_spec_demo
filter: "dt='$[yyyymmdd]' AND hh='$[hh24-1/24]'"
dataSource:
name: odps_first
envType: Dev
rules:
- assertion: "id_for_belgium between 5 and 10"
id_for_belgium:
query: "SELECT count(*) FROM product_b;"
collectFailedRows: true
failedRowsQuery: "SELECT id FROM product_b WHERE id IS NULL"