Todos os produtos
Search
Central de documentação

Data Transmission Service:Definir condições de filtro

Última atualização: Jun 27, 2026

Durante a configuração da tarefa, defina condições de filtro para sincronizar ou migrar apenas as linhas correspondentes aos seus critérios. Esse recurso é útil em cenários de sharding e na sincronização ou migração parcial de dados.

Pré-requisitos

Antes de começar, verifique se:

Limitações

  • O sistema não oferece suporte a filtros de subconsulta complexos, como COLUMN1 IN (SELECT id FROM table1).

  • Se a tabela ou coleção de origem tiver duas colunas cujos nomes diferem apenas em maiúsculas e minúsculas, o filtro pode não produzir os resultados esperados.

  • Fontes Tair/Redis: filtre apenas por prefixo de chave.

  • Fontes MongoDB: há suporte para filtragem condicional apenas durante a sincronização ou migração completa, mas não durante a sincronização ou migração incremental.

  • Demais tipos de banco de dados de origem: se a condição de filtro exigir aspas, use aspas simples (').

  • Não termine uma condição de filtro com ponto e vírgula (;), pois isso pode causar falha na tarefa.

Importante

Para fontes SQL Server, o filtro só entra em vigor quando o campo filtrado faz parte de um índice clusterizado. Caso contrário, a lógica de filtro não será aplicada.

Como funciona

O DTS aplica condições de filtro usando filtragem de pré-imagem: a avaliação do filtro considera o valor do campo antes da alteração, e não depois.

Quando uma operação UPDATE altera o valor de um campo filtrado de um estado que satisfaz a condição para outro que não a satisfaz, o DTS converte o UPDATE em um DELETE no banco de dados de destino.

Exemplo: Suponha que você configure a condição de filtro enabled = 1. Se um registro mudar de enabled = 1 para enabled = 0, o DTS processará a mudança da seguinte forma:

  1. Excluir o registro onde enabled = 1 — como a pré-imagem satisfaz a condição, a exclusão é replicada para o destino.

  2. Inserir um novo registro onde enabled = 0 — como esse valor não satisfaz a condição, o registro não é sincronizado.

Para sincronizar tanto os registros com enabled = 0 quanto com enabled = 1, remova a condição de filtro e reinicie a sincronização.

Definir condições de filtro individualmente

  1. Na fase Configure Objects, mova o objeto de destino para a área Selected Objects.

    Selecione objetos na granularidade apropriada ao tipo do banco de dados de origem: granularidade de coleção para MongoDB , granularidade de Redis DB para Tair/Redis e granularidade de tabela para os demais tipos de banco de dados.
  2. Clique com o botão direito do mouse no objeto de destino.

  3. Na caixa de diálogo exibida, insira a condição de filtro. Para exemplos de sintaxe, consulte Instruções de exemplo.

    • Tair/Redis: Na caixa de diálogo Edit Schema, insira os Prefixes of Keys to Be Synchronized (lista de permissões) ou Prefixes of Keys to Be Filtered Out (lista de bloqueios).

    • MongoDB e demais tipos de banco de dados: Na caixa de diálogo Edit Table, insira as Filter Conditions.

  4. Clique em OK.

  5. Conclua a configuração restante da tarefa conforme solicitado.

Definir condições de filtro em lote

  1. Na fase Configure Objects, mova os objetos de destino para a área Selected Objects.

  2. No canto superior direito da área Selected Objects, clique em Batch Edit.

  3. Na caixa Select Objects, selecione os objetos para os quais deseja definir condições de filtro.

    Mantenha o valor padrão para Select Type .
  4. Na área Select Editing Type, clique na aba Filter Conditions.

    Para fontes Tair/Redis , clique na aba Prefixes of Keys to Be Synchronized/Filtered Out .
  5. Selecione um modo de edição em Select Edit Mode:

    • Add: Mantém as condições de filtro existentes e adiciona novas.

    • Overwrite: Limpa as condições de filtro existentes e aplica novas.

  6. Insira a condição de filtro. Para exemplos de sintaxe, consulte Instruções de exemplo.

    • Tair/Redis: Selecione Prefixes of Keys to Be Synchronized ou Prefixes of Keys to Be Filtered Out e insira os prefixos correspondentes.

    • MongoDB e demais tipos de banco de dados: Insira a condição de filtro na caixa de texto.

  7. Clique em OK.

  8. Conclua a configuração restante da tarefa conforme solicitado.

Instruções de exemplo

Fontes Tair/Redis

Cenário

Onde inserir

Exemplo

Descrição

Sincronizar um único prefixo

Prefixes of Keys to Be Synchronized

dtsnew

Sincroniza apenas chaves iniciadas com dtsnew

Excluir um único prefixo

Prefixes of Keys to Be Filtered Out

dtstest

Exclui chaves iniciadas com dtstest; sincroniza todo o resto

Sincronizar vários prefixos

Prefixes of Keys to Be Synchronized

dtsnew,dtsold

Sincroniza chaves iniciadas com dtsnew ou dtsold

Combinação de sincronização e exclusão

Prefixes of Keys to Be Synchronized: dts; Prefixes of Keys to Be Filtered Out: dtstest

Sincroniza chaves iniciadas com dts, exceto aquelas iniciadas com dtstest

Fontes MongoDB

As condições de filtro do MongoDB usam uma sintaxe diferente das cláusulas WHERE do SQL. Para mais informações, consulte Mapeamento de instruções SQL para MongoDB.

Cenário

Exemplo

Descrição

Filtrar por intervalo de ID

{"_id":{$gt:"user100844658590795**",$lte:"user101674868045948**"}}

Sincroniza registros onde _id é maior que o limite inferior e menor ou igual ao limite superior. $gt significa maior que; $lte significa menor ou igual a.

Outros tipos de banco de dados

O campo Filter Conditions aceita os seguintes operadores: =, !=, <, > e in.

Ao combinar várias condições, and une condições que devem ser todas verdadeiras; já or une condições em que pelo menos uma deve ser verdadeira. É possível misturar ambos os operadores em uma única expressão, conforme os exemplos abaixo.

Em caso de dúvidas sobre como escrever condições de filtro, verifique primeiro o FAQ .

Cenário

Exemplo

Descrição

Filtrar por intervalo numérico

id > 100 and id <= 200 or id in (1, 2, 3)

Sincroniza linhas onde id está entre 101 e 200 (inclusive) ou onde id é 1, 2 ou 3

Filtrar por valores de string

address in('hangzhou','shanghai')

Sincroniza linhas onde address é hangzhou ou shanghai

Filtrar por data

create_time>'2020-01-01' ou create_time>'2020-01-01 00:00:00'

Sincroniza linhas criadas após 1º de janeiro de 2020

Importante

Para filtros baseados em tempo:

  • Não use formatos abreviados como create_time>'2020'.

  • O DTS avalia condições de tempo no fuso horário GMT+8. Se seus dados de origem incluírem informações de fuso horário, converta o valor para GMT+8 antes de inseri-lo em Filter Conditions.

Tipos de campo suportados

Somente campos cujos tipos de dados constam na tabela a seguir podem ser usados em condições de filtro. Se o tipo de um campo não estiver listado para o seu banco de dados, a condição de filtro não se aplicará a ele.

Banco de dados

Tipos de dados suportados

PostgreSQL

CHAR, BIGINT, SMALLINT, INTEGER, FLOAT4, FLOAT8, VARCHAR, DATE, TIMESTAMP, NUMERIC

Oracle

VARCHAR2, NVARCHAR2, NUMBER, DATE, ROWID, CHAR, BINARY_FLOAT, BINARY_DOUBLE, CLOB, NCLOB, TIMESTAMP, TIMESTAMP WITH TIME ZONE, UROWID

MySQL

DECIMAL, INTEGER, BIGINT, FLOAT4, DOUBLE, DATE, TIME, DATETIME, YEAR, VARCHAR

SQL Server

NCHAR, DATE, TIME, DATETIME2, TINYINT, SMALLINT, INT, SMALLDATETIME, REAL, DECIMAL, DATETIME, FLOAT, BIT, NUMERIC, BIGINT, VARCHAR, CHAR, TIMESTAMP, NVARCHAR, MONEY, SMALLMONEY, UNIQUEIDENTIFIER

DB2 LUW

SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, FLOAT, DOUBLE, DECFLOAT, CHAR, CHARACTER, VARCHAR, GRAPHIC, NCHAR, VARGRAPHIC, NVARCHAR, DATE, TIME, TIMESTAMP, BLOB, CLOB, DBCLOB, LONG VARG, LONG VARCHAR, LONG VARGRAPHIC, BINARY, VARBINARY, XML

DB2 AS400

BIGINT, INTEGER, SMALLINT, DECIMAL, NUMERIC, FLOAT, DECFLOAT, CHAR, VARCHAR, NCHAR, BINARY, DATE, TIME, TIMESTAMP, XML

Próximos passos

Visualize condições de filtro

  • Tarefa ainda não iniciada: Acesse a fase Configure Objects and Advanced Settings. Na área Selected Objects, expanda o objeto de sincronização ou migração, clique com o botão direito do mouse no objeto de destino e visualize as Filter Conditions.

  • Tarefa já em execução: Use o recurso Create Similar Task ou Modificar objetos de sincronização para acessar a fase Configure Objects and Advanced Settings. Expanda o objeto na área Selected Objects, clique com o botão direito do mouse no destino e visualize as Filter Conditions. Cancele a tarefa após a visualização, pois nenhuma ação adicional é necessária. Para mais informações, consulte Criar tarefa semelhante.

Modifique condições de filtro

  • Tarefa ainda não iniciada: Acesse a fase Configure Objects and Advanced Settings. Na área Selected Objects, expanda o objeto, clique com o botão direito do mouse no destino e edite as Filter Conditions.

  • Tarefa já em execução:

    • Tarefa de migração: Não há suporte para modificação de condições de filtro. Reconfigure a tarefa.

    • Tarefa de sincronização: Use o recurso Modificar objetos de sincronização para acessar a fase Configure Objects and Advanced Settings. Expanda o objeto de sincronização na área Selected Objects, clique com o botão direito do mouse no destino, modifique as Filter Conditions e conclua a configuração restante conforme solicitado.

Solução de problemas

Se uma condição de filtro for inválida, a tarefa poderá falhar com um dos seguintes erros.

A expressão regular (.*)? nas mensagens de erro representa uma variável.

Código de erro

Mensagem de erro

Causa

DTS-RETRY-ERR-0070

In process of processing data (.)? failed (.)? Syntax error in SQL statement

O formato do campo de filtro para o objeto de sincronização é inválido.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

O campo especificado na condição de filtro não existe no banco de dados de origem.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

O campo especificado na condição de filtro não existe no banco de dados de origem.

DTS-RETRY-ERR-0188

null value in column (.*)? violates not-null constraint

Uma coluna NOT NULL no destino foi filtrada ou o valor da coluna de origem correspondente está ausente.

DTS-RETRY-ERR-0276

if (.*)? is specified it must not be empty

O valor mapeado para a coluna _id do Elasticsearch está vazio. Filtre registros com valores vazios.

FAQ

Por que minha condição de filtro não entrou em vigor?

As causas mais comuns são expressão de filtro inválida e uso de filtro em tarefa incremental do MongoDB, que não aceita condições de filtro. Verifique se sua expressão usa apenas operadores e tipos de campo suportados e confirme se sua tarefa não é exclusivamente incremental do MongoDB.

Quais dados uma condição de filtro modificada afeta?

Depende do status da tarefa:

  • Tarefa ainda não iniciada: Para fontes MongoDB, a alteração entra em vigor apenas durante a fase de sincronização completa. Para todos os outros tipos de origem, ela vale tanto para as fases completa quanto incremental.

  • Tarefa já em execução: Para fontes MongoDB, as alterações não surtem efeito, pois não há suporte para modificação de condições de filtro. Para todos os outros tipos de origem, a alteração afeta apenas dados incrementais.

Posso filtrar dados correspondentes e sincronizar ou migrar todo o resto?

  • Fontes Tair/Redis: Sim. Insira os prefixos de chave que deseja excluir em Prefixes of Keys to Be Filtered Out.

  • Todos os outros tipos de origem: Não — o DTS não oferece suporte a filtros baseados em exclusão para esses bancos de dados. Em vez disso, escreva a condição inversa. Por exemplo, para excluir linhas onde age = 25, insira age > 25 or age < 25.

Como filtro por vários prefixos de chave?

Separe os prefixos com vírgulas (,).

Posso usar Prefixes of Keys to Be Synchronized e Prefixes of Keys to Be Filtered Out simultaneamente?

Sim. Ambas as regras se aplicam ao mesmo tempo. O DTS sincroniza chaves correspondentes aos prefixos de sincronização e, em seguida, exclui quaisquer dessas que também correspondam aos prefixos filtrados.

Posso chamar uma API em uma condição de filtro?

Não.

Referência de API

Operação de API

Descrição

ConfigureDtsJob

Configura uma tarefa de migração ou sincronização do DTS. Defina o parâmetro filter em Dblist para estabelecer condições de filtro.