Todos los productos
Search
Centro de documentos

DataWorks:Configurar el filtrado de datos

Última actualización: Oct 09, 2026

En el monitoreo de calidad de datos, normalmente se supervisan solo los datos que cambiaron en lugar de cada fila de una tabla. Este tema describe cómo configurar el filtrado de datos para cada ejecución de monitoreo.

Ejemplo de filtrado de datos

En la mayoría de los casos, los datos modificados se filtran mediante un campo de tiempo. Por ejemplo, MaxCompute utiliza particiones de tiempo, mientras que una tabla de transacciones comerciales de MySQL se puede filtrar por la hora de creación de cada transacción.

Establezca un filter en las reglas y el monitoreo para filtrar los datos. Ejemplo:

datasets: - type: Table tables: - tb_d_spec_demo filter: "dt = '$[yyyymmdd]' AND hh = '$[hh24-1/24]'" dataSource: name: odps_first envType: Dev rules: - assertion: "row_count > 0" # A rule-level filter works together with the filter in Scan.dataset # At runtime, the filter is (dt = '$[yyyymmdd-1]' AND hh = '$[hh24-1/24]') AND (id IS NOT NULL) filter: "id IS NOT NULL" computeResource: id: 2001

Sintaxis del filtro

Sintaxis básica

La sintaxis de filter sigue generalmente las condiciones WHERE de SQL-92, excepto por los predicados match y overlaps. La sintaxis es la siguiente:

<search condition> ::=
    <boolean term> | <search condition> OR <boolean term>

<boolean term> ::=
    <boolean factor> | <boolean term> AND <boolean factor>

<boolean factor> ::=
    [ NOT ] <boolean test>

<boolean test> ::=
    <predicate> | ( <search condition> )

<predicate> ::=
    <comparison predicate> | <between predicate> |
    <in predicate> | <like predicate> | <null predicate> |
    <quantified comparison predicate> | <exists predicate>

<comparison predicate> ::=
    <expression> <comparison_operator> <expression>

<between predicate> ::=
    <expression> [NOT] BETWEEN <lower_bound> AND <upper_bound>

<in predicate> ::=
    <expression> [NOT] IN (value_list | subquery)

<like predicate> ::=
    <expression> [NOT] LIKE pattern [ESCAPE escape_character]

<null predicate> ::=
    <expression> IS [NOT] NULL

<quantified comparison predicate> ::=
    <expression> <comparison_operator> { ALL | ANY | SOME } (subquery)

<exists predicate> ::=
    EXISTS (subquery)

Ejemplos de configuración

  • Predicado de comparación

    salary > 50000
  • Predicado between

    price BETWEEN 10 AND 50
  • Predicado in

    department IN ('Sales', 'Marketing')
  • Predicado like

    name LIKE 'Jo%'
  • Predicado null

    department IS NOT NULL
  • Predicado de comparación cuantificada

    salary > ALL (SELECT salary FROM employees WHERE department = 'Sales')
  • Predicado exists

    EXISTS (SELECT 1 FROM customers cu WHERE cu.country_id = c.country_id)
  • Condición de búsqueda compleja

    -- Use the AND logical operator to connect two predicates
    salary > ALL (SELECT salary FROM employees WHERE department = 'Sales') AND EXISTS (SELECT 1 FROM customers cu WHERE cu.country_id = c.country_id)
    -- Use the OR logical operator to connect predicates
    department IS NOT NULL OR name LIKE 'Jo%'

Definir un filtro con una consulta nativa

Si la consulta del almacén de datos subyacente no se puede expresar en SQL-92, como una consulta que usa RLIKE, búsqueda geoespacial o búsqueda de texto completo, inicie el valor de filter con la palabra clave query: y escriba la consulta nativa directamente.

Por ejemplo, para filtrar datos de una tabla de MaxCompute con RLIKE, configure el filtro de la siguiente manera:

datasets:
  - type: Table
    indices:
      - ods_d_customers
    dataSource:
      name: odps_first
      envType: Dev
rules:
  - assertion: "row_count > 0"
    filter: "query: email_address RLIKE '^info@'"

Usar variables de tiempo en un filtro

Cuando se utilizan particiones de tiempo, una ejecución de monitoreo de calidad analiza diariamente la partición del día actual o la partición T-1. Para obtener la fecha correspondiente automáticamente en cada ejecución, use una expresión de desplazamiento de tiempo del sistema de programación.

Por ejemplo, si filter contiene una expresión de tiempo de programación como $[yyyymmdd-1], el sistema de calidad de datos aplica automáticamente el desplazamiento según la hora programada de la instancia de programación y sustituye el valor resultante.

Nota

Si el monitoreo de calidad de datos no lo activa una instancia de programación, especifique el parámetro triggerTime de activación de CreateDataQualityScanRun. El sistema aplica el desplazamiento respecto a triggerTime,