Utilice reglas de métricas personalizadas cuando los tipos de métricas integrados no cubran su lógica de negocio. Defina la consulta SQL de la métrica directamente en la configuración de la regla y refiérela por nombre en la aserción.
Definir una regla de métrica personalizada
En el campo assertion, escriba una condición con el nombre de métrica personalizada que prefiera. Luego, en el mismo bloque de reglas, agregue una clave que coincida con ese nombre y proporcione su consulta SQL en 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;"
El nombre de la métrica personalizada avg_order_span aparece dos veces y cumple dos funciones:
|
Role |
Location |
Purpose |
|
Operando de la aserción |
|
Define el umbral de aprobación o fallo |
|
Clave de configuración |
|
Vincula la consulta SQL a la métrica |
DataWorks ejecuta la consulta SQL para generar un valor y evalúa si este satisface la condición de la aserción. De ser así, la comprobación se aprueba.
Almacenar filas con errores en reglas de métricas personalizadas
Para conservar las filas que provocaron un fallo en la comprobación y revisarlas posteriormente, establezca collectFailedRows: true y agregue una failedRowsQuery.
Estos dos campos tienen propósitos distintos: query calcula el valor de la métrica utilizado en la aserción, mientras que failedRowsQuery recupera las filas reales para almacenarlas como muestras. Ambos campos son obligatorios si desea conservar los datos con errores.
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"