Buscar K
Aparência
Aparência
Um registro apagado no sistema de origem deixa de existir lá, e nenhuma consulta consegue trazê-lo. O destino só percebe a exclusão se a carga apagar antes de inserir, ou se alguém perguntar à origem o que ainda existe.
Nada falha quando isso acontece: a execução fica verde e o pedido cancelado continua somando no Dashboard.
| Carga | Registro apagado na origem |
|---|---|
| Total com Substituir tudo | sai do destino na execução seguinte |
| Janela com Substituir a janela | sai se cair dentro da janela recarregada; fora dela, fica |
| Janela com Atualizar por chave | fica |
| Incremental, qualquer Gravação | fica |
A diferença vem da Gravação. Substituir tudo e Substituir a janela apagam antes de inserir, então o que não veio na consulta não volta. Atualizar por chave e Somente inserir nunca apagam. Os dois eixos de carga estão em Tipos de carga.
Sincronizar exclusões. O Dataflow guarda uma consulta que devolve só as chaves que ainda existem na origem. Um agendamento roda essa consulta com o contexto Sincronizar exclusões, e toda linha do destino cuja chave não veio é marcada como excluída. A linha marcada some das consultas, dos Dashboards e dos totais sem que ninguém precise filtrar. Nessa execução nenhum nó do Dataflow roda e só as colunas de chave trafegam, o que deixa a varredura barata para rodar toda noite numa tabela grande.
A sincronização só existe para Dataflow de Extração Incremental cujo destino é uma tabela do Datawarehouse com Chave Única e colunas-chave marcadas, e exige Agente ETL 1.27.0 ou mais novo. O Lumo recusa a configuração em qualquer outra combinação, inclusive em Janela com Atualizar por chave. O passo a passo está em Sincronizar exclusões.
Carga Total periódica. Um agendamento noturno ou semanal com contexto Total troca toda a parte do Dataflow na tabela e leva junto o que foi apagado. É o caminho para Janela com Atualizar por chave e para tabela que cabe numa leitura completa. Num Dataflow de Janela, ele fecha também o que ficou para trás das janelas curtas. Ver Montar janelas em escada.
Exclusão lógica na origem. Se a origem marca o registro como excluído (uma coluna de status ou de data de exclusão) em vez de apagá-lo, a marcação chega pela carga como uma alteração qualquer. A linha continua no destino, e todo relatório precisa filtrar por essa coluna.
Variável DeletePredicate. Um Configurador que gera a variável DeletePredicate troca a condição de exclusão que roda antes da inserção, e ela vence a Gravação escolhida. É um mecanismo de código: cada Dataflow precisa calcular as chaves que sumiram, e a condição é uma cláusula SQL, o que limita o tamanho da lista. Ver Configuradores.
A sincronização marca como excluído tudo que a consulta de chaves não devolveu. Para o Lumo, "o pedido foi apagado no ERP" e "a consulta não trouxe o pedido" são a mesma coisa. Uma consulta de chaves com filtro de período, TOP ou LIMIT roda sem erro e marca como excluído todo o histórico que ficou de fora.
O estrago não se desfaz sozinho. A carga Incremental seguinte calcula o ponto de corte a partir das linhas vivas do destino; como as recentes continuam vivas, ela não relê o histórico marcado. A saída é uma carga Total.
Duas situações fazem a varredura parar antes de marcar qualquer linha, e as duas aparecem no log com a execução verde:
| Situação | Por que para |
|---|---|
| A consulta não devolveu nenhuma chave | uma origem vazia e uma leitura que falhou chegam iguais; seguir marcaria a tabela inteira |
| Há mais linhas a marcar do que linhas no destino | indica defeito, e não há o que confirmar |
Não existe limite por proporção. Uma varredura que marca 90% da tabela passa, desde que a consulta tenha devolvido ao menos uma chave. Conferir que a consulta devolve o conjunto inteiro é tarefa sua, antes de agendar.
O gatilho CDC com uma regra que olha a contagem de linhas percebe que um registro sumiu e dispara o agendamento. Quem carrega continua sendo o Dataflow, e uma carga Incremental não traz o que não existe. Para espelhar a exclusão, o gatilho precisa vir junto com um dos caminhos acima.
key_sweep do flow. Ver a referência de flow.