Todos los productos
Search
Centro de documentos

DataWorks:Reglas de métricas personalizadas

Última actualización: Sep 04, 2026

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

assertion: "avg_order_span between 5 and 10"

Define el umbral de aprobación o fallo

Clave de configuración

avg_order_span: (elemento hermano de assertion)

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"