Skip to content

Sincronizar exclusões ​

Tipo
Como fazer
Para
Engenharia de dados
Na tela
HorusETL › Data Flows › editor do Dataflow › Carga › Sincronizar exclusões

Use a sincronização para que um registro apagado na origem também saia do HorusDW num Dataflow Incremental, sem recarregar a tabela inteira. O Dataflow guarda uma consulta que devolve as chaves que ainda existem, e um agendamento à parte marca como excluído tudo que não veio. Por que a carga Incremental não percebe exclusão está em Exclusões na origem.

Antes de começar ​

  • O Dataflow tem Extração Incremental.
  • A tabela de destino é uma tabela do Datawarehouse com Chave Única e as Colunas Chave marcadas.
  • O Agente ETL está na versão 1.27.0 ou mais nova. Um Agente mais antigo nem recebe o agendamento de varredura.
  • Há uma conexão com usuário só de leitura no banco de origem. O Lumo confere se a consulta é só leitura pelo texto, o que não pega toda função que escreve; o usuário restrito é a proteção que vale.

Passos ​

  1. Abra o Dataflow na Minha Mesa (clone o publicado, se for o caso) e vá à seção Carga.
  2. Marque Sincronizar exclusões e clique em Configurar consulta. Abre a janela Sincronizar exclusões.
  3. Em Credencial, escolha a conexão de onde ler as chaves. Ela pode ser outra que não a do Dataflow.
  4. Em Consulta de chaves, escreva um SELECT que devolve só as colunas-chave, com os mesmos nomes da chave do destino:
sql
SELECT id AS PEDIDO_ID FROM pedidos
  1. Clique em Testar consulta. O teste roda no Agente e compara as colunas com a chave do destino; só siga quando aparecer "As colunas batem com a chave de pedidos".
  2. Clique em Aplicar, salve o Dataflow e republique; ver Publicar e clonar um Dataflow.
  3. Em Agendamentos, crie um agendamento com o Dataflow no contexto Sincronizar exclusões e um gatilho Diária, por exemplo às 03:00.

Configurar não faz rodar. A varredura só acontece no agendamento com esse contexto.

A consulta devolve o conjunto inteiro ​

Tudo o que a consulta de chaves não devolver é marcado como excluído. Ela precisa trazer todas as chaves que uma carga Total traria: sem filtro de período, sem TOP, sem LIMIT.

sql
-- Errado: marca como excluído todo pedido com mais de 30 dias
SELECT id AS PEDIDO_ID FROM pedidos WHERE data_emissao >= CURRENT_DATE - 30

Rode as abas abaixo para ver o que cada consulta de chaves marcaria:

O que a varredura marcaDuckDB

destino é a tabela no HorusDW e pedidos é a origem em 02/11/2026, já sem o pedido 1003, que foi apagado. Cada aba roda uma consulta de chaves e mostra o que a varredura marcaria como excluído.

Schema

A consulta errada roda sem erro e a execução fica verde. Antes de agendar, compare a contagem da consulta de chaves com a contagem de uma carga Total da mesma origem; os dois números precisam bater.

Nomes das colunas ​

O casamento com a chave do destino é pelo nome da coluna, sem diferenciar maiúscula de minúscula, e a ordem não importa. Se o nome na origem é outro, use alias: SELECT id AS PEDIDO_ID. Numa chave composta, devolva todas as colunas:

sql
SELECT pedido_id AS PEDIDO_ID, produto_id AS PRODUTO_ID FROM pedido_itens

Coluna a mais ou a menos é recusada antes de qualquer marcação. O teste mostra "Falta devolver:" e "Tire da consulta:" com os nomes.

Agendar junto com a carga ​

A carga Incremental e a varredura são agendamentos separados, com frequências diferentes:

AgendamentoContextoGatilho
PedidosIncrementalHoras, a cada 1, entre 06:00 e 22:00
Pedidos exclusõesSincronizar exclusõesDiária, às 03:00

A varredura lê o conjunto inteiro de chaves a cada execução, então o custo acompanha o tamanho da tabela, e não o que mudou. Uma vez por noite resolve quase todo caso; duas vezes por dia, se a exclusão precisa aparecer no mesmo dia. Um mesmo Dataflow nunca roda duas vezes ao mesmo tempo: se a carga estiver rodando, a varredura espera.

Conferir o resultado ​

A execução da varredura fica com status de sucesso mesmo quando ela para sem marcar nada. Leia a última linha do log do Dataflow nas primeiras noites:

O log dizO que aconteceu
12 de 48320 linhas marcadas como excluidas.a varredura marcou 12 linhas
0 de 48320 linhas marcadas como excluidas.nada sumiu na origem; é o comum
Varredura recusada: ...a varredura não fez nada, e o motivo vem na mensagem

Na varredura, Linhas de Entrada conta as chaves lidas da origem e Linhas de Saída fica em 0; o número de linhas marcadas só aparece na mensagem. Um número alto logo na primeira noite costuma ser filtro na consulta de chaves.

Se der errado ​

Varredura recusada: A consulta de chaves nao devolveu nenhuma chave... A consulta voltou vazia, por origem vazia ou por falha de leitura (permissão, tabela renomeada). Confira a consulta com Testar consulta. Se a origem esvaziou de verdade, rode o Dataflow com Forçar execução em modo Total.

Marcou muito mais do que devia. A consulta tem filtro. Corrija a consulta e rode o Dataflow com Forçar execução em modo Total: a carga Incremental seguinte não repõe o histórico marcado.

A caixa Sincronizar exclusões não aparece. O Dataflow não é Incremental ou o destino não tem Chave Única. Em Janela com Atualizar por chave, a saída é uma carga Total periódica; ver Montar janelas em escada.

Relacionado ​

Pelo Lumo CLI

Este recurso também pode ser criado e versionado em YAML. Veja a referência de flow.