Skip to content

Disparar por mudança de dados ​

Tipo
Como fazer
Para
Engenharia de dados
Na tela
HorusETL › Agendamentos › Gatilhos de Execução › Mudança de dados (CDC)

O gatilho Mudança de dados (CDC) faz o Agente ETL rodar uma consulta leve na origem a cada poucos segundos, a sonda, e disparar o agendamento só quando o valor que ela devolve muda. Use quando a tabela muda pouco mas a extração é cara, ou quando a origem não aguenta o Dataflow inteiro a cada minuto. Se a extração já é barata e a mudança é rara, um gatilho por horário dá menos trabalho.

Antes de começar ​

  • Agente ETL na versão 1.27.0 ou mais nova. Um Agente anterior não recebe o agendamento com esse gatilho.
  • Uma conexão com a origem, de preferência com usuário só de leitura. O Lumo confere o texto da consulta (ela precisa começar com SELECT ou WITH), mas uma função que escreve sem usar palavra de escrita passa por essa conferência.
  • Um índice na coluna que a sonda vai olhar. Sem índice, cada sondagem lê a tabela inteira no banco de produção, repetida a cada poucos segundos.

Passos ​

  1. Abra o agendamento em Agendamentos e, no card Gatilhos de Execução, clique em Gatilho e escolha Mudança de dados (CDC).
  2. Clique em Configurar sonda. Abre a janela Mudança de dados (CDC).
  3. Em Credencial da origem, escolha a conexão. Ela não precisa ser a mesma dos Dataflows.
  4. Em O que observar, escolha a regra e a Tabela. A tela escreve a Consulta de sondagem.
  5. Clique em Testar sonda. O teste roda a consulta na origem e mostra o valor e o tempo; uma sondagem que leva segundos indica leitura da tabela inteira.
  6. Em Intervalo de sondagem (segundos), escolha de 5 a 3600.
  7. Se quiser, limite a sonda a uma faixa de horário. Fora da faixa o Agente ETL não consulta a origem.
  8. Clique em Salvar gatilho e salve o agendamento. O card mostra o gatilho com o intervalo, por exemplo "a cada 30s".

O que cada regra enxerga ​

RegraPegaNão pega
Contagem e maior valorinclusão, alteração e exclusãonada
Só a contagem de linhasinclusão e exclusãoalteração de linha que já existia
Só o maior valor de uma colunainclusão e alteraçãoexclusão
Contadores internos da tabela (PostgreSQL)inclusão, alteração e exclusão, sem ler a tabelanada, com track_counts ligado no servidor
Versão do Change Tracking (SQL Server)qualquer mudança nas tabelas rastreadas, sem ler a tabelaqual tabela mudou
Consulta personalizadao que a sua consulta devolverdepende da consulta

As regras nativas, contadores do PostgreSQL e Change Tracking do SQL Server, leem um contador que o próprio banco mantém, e o tamanho da tabela deixa de importar. Em outros bancos elas aparecem em cinza, com o motivo.

A consulta precisa devolver uma linha, com até 8 colunas. Com mais de uma coluna, o gatilho dispara quando qualquer uma muda. É assim que a regra Contagem e maior valor evita juntar os dois números num texto, o que dependeria do dialeto do banco.

Quando a carga falha ​

O valor observado só avança quando a carga disparada termina com sucesso. Se ela falha, a sondagem seguinte vê a mesma mudança e dispara de novo, espaçando as tentativas até 5 minutos. Nada se perde; o pior caso é reprocessar.

A sonda pausa enquanto a carga roda.

O que o gatilho não faz ​

O gatilho decide quando rodar; o Dataflow decide o que trazer. A sonda não passa ao Dataflow a lista do que mudou: cada Dataflow carrega como sempre carregou, pela sua Extração.

Detectar exclusão também não apaga nada. Com uma regra que olha a contagem, o gatilho percebe que uma linha sumiu e dispara, mas uma carga Incremental não traz o que não existe. Para espelhar a exclusão, combine com Sincronizar exclusões ou com uma carga Total periódica.

Em Avançado, Tempo limite da sonda (segundos) define quanto uma sondagem pode demorar; ele precisa ser menor que o intervalo.

Se der errado ​

A sonda fica verde e nunca dispara, no SQL Server. O Change Tracking está desligado e a função devolve vazio, que é um valor estável. O Testar sonda acusa esse caso. No PostgreSQL, o equivalente é o contador parado em zero, por track_counts desligado.

O badge mostra "sonda com erro" ou "sonda sem resposta". Clique no badge para abrir Estado da sonda, com Valor observado, Última sondagem, Erros consecutivos e Último erro. Costuma ser credencial, rede ou tempo limite curto demais.

O banco de origem ficou lento. A sonda lê a tabela inteira a cada sondagem. Crie o índice na coluna observada, troque para uma regra nativa ou aumente o intervalo.

Relacionado ​

Pelo Lumo CLI

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