Todos os produtos
Search
Central de documentação

DataWorks:Configure a filtragem de dados

Última atualização: Oct 09, 2026

No monitoramento da qualidade de dados, geralmente monitoramos apenas os dados alterados, em vez de analisar cada linha da tabela. Este tópico descreve como configure a filtragem de dados para cada execução de monitoramento.

Exemplo de filtragem de dados

Na maioria dos casos, filtramos os dados alterados por um campo de tempo. Por exemplo, o MaxCompute utiliza partições de tempo, enquanto, no MySQL, filtramos uma tabela de transações comerciais pelo horário de criação de cada transação.

Defina um filter no monitoramento e nas regras para filtrar os dados. Exemplo:

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

Sintaxe do filtro

Sintaxe básica

A sintaxe do filter geralmente segue as condições WHERE do SQL-92, com exceção dos predicados match e overlaps. A sintaxe é a seguinte:

<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)

Exemplos de configuração

  • Predicado de comparação

    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 comparação quantificada

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

    EXISTS (SELECT 1 FROM customers cu WHERE cu.country_id = c.country_id)
  • Condição de pesquisa complexa

    -- 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%'

Defina um filtro com uma consulta nativa

Se não for possível expressar a consulta do armazenamento de dados subjacente em SQL-92, como em consultas com RLIKE, busca geoespacial ou busca de texto completo, inicie o valor do filter com a palavra-chave query: e escreva a consulta nativa diretamente.

Por exemplo, para filtrar dados da tabela do MaxCompute com RLIKE, configure o filtro da seguinte forma:

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 variáveis de tempo em um filtro

Ao usar partições de tempo, uma execução de monitoramento de qualidade verifica a partição do dia atual ou a partição T-1 todos os dias. Para obter a data correspondente automaticamente a cada execução, use uma expressão de deslocamento de tempo do sistema de agendamento.

Por exemplo, se o filter contiver uma expressão de tempo do agendamento como $[yyyymmdd-1], o sistema de qualidade de dados aplica automaticamente o deslocamento com base no horário programado da instância de agendamento e substitui o valor resultante.

Nota

Se uma instância de agendamento não acionar o monitoramento da qualidade de dados, especifique o parâmetro de gatilho triggerTime do CreateDataQualityScanRun. O sistema aplica o deslocamento em relação ao triggerTime.