Skip to content

Escolher a carga de uma tabela ​

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

A carga certa depende de como o dado se comporta na origem. Três perguntas sobre a origem resolvem quase todos os casos. Os dois eixos de carga, Extração e Gravação, estão explicados em Tipos de carga. Para ver o que cada par faz com as linhas de uma mesma origem, use o simulador de carga.

Antes de começar ​

Abra a tabela de origem e descubra quais colunas de data e de controle ela tem, e se o sistema apaga registro de verdade ou só marca como cancelado.

Passos ​

  1. A tabela tem uma data que nunca muda depois que o registro nasce? Data de emissão, de venda, de movimento, created_at. Se tem e a tabela é grande, use Janela com Substituir a janela, com essa data como Coluna de janela.
  2. Não tem data parada, mas tem uma coluna que só cresce? Um atualizado_em que sobe a cada alteração, ou um ID sequencial. Use Incremental com Atualizar por chave, com essa coluna como Coluna de corte. A tabela de destino precisa de Chave Única.
  3. O registro interessa por várias datas, e todas mudam? Título a pagar e a receber, por vencimento, pagamento e emissão. Use Janela com Atualizar por chave, filtrando pelas várias datas na consulta. A tabela de destino precisa de Chave Única, e essa combinação exige Agente ETL 1.28.0 ou mais novo: num Agente anterior a execução é recusada, porque ele apagaria a janela em vez de atualizar por chave.
  4. Nenhuma das anteriores, ou a tabela é pequena? Use Total com Substituir tudo.
  5. A origem apaga registro? Se você ficou com Incremental ou com Janela com Atualizar por chave, planeje como a exclusão chega ao destino; ver Exclusões na origem.

A consulta de cada escolha ​

A Extração só recorta a origem se a consulta usar as variáveis da carga:

EscolhaConsulta
JanelaWHERE data_emissao BETWEEN '{StartDate}' AND '{EndDate}'
IncrementalWHERE atualizado_em > '{LastDataPoint}'
Janela com Atualizar por chaveWHERE data_vencimento BETWEEN '{StartDate}' AND '{EndDate}' OR data_pagamento BETWEEN '{StartDate}' AND '{EndDate}'
Totalsem filtro de carga

Com Substituir a janela, a consulta precisa devolver tudo o que existe na janela pela coluna de janela, e nada fora dela. Uma linha da janela que não vier é apagada do destino; uma linha de fora que vier fica duplicada.

A chave da tabela ​

Atualizar por chave exige uma tabela do Datawarehouse (não do Datalake) com Chave Única e as Colunas Chave marcadas. Se faltar, a seção Carga avisa "Atualizar por chave precisa que a tabela titulos tenha chave única." e oferece Resolver a chave.

Mudar a chave recria a tabela no banco analítico: a tela avisa "A tabela será reconstruída", e os dados voltam na próxima execução do Dataflow. As colunas-chave precisam distinguir uma linha da outra; num item de pedido, a chave é pedido e produto juntos.

Variações ​

Log que nunca muda. Um registro de evento com ID sequencial pode usar Incremental com Somente inserir, sem chave. Com destino no Datawarehouse, essa opção só pode ser escolhida em Dataflow que já era Incremental; num Dataflow novo ela aparece desabilitada, com o motivo, e o caminho é Atualizar por chave.

Tabela derivada de outra tabela do Lumo. O Dataflow que lê uma tabela do HorusDW escolhe a carga do mesmo jeito. Rode-o depois do Dataflow que alimenta a origem, no mesmo agendamento, e use uma janela igual ou maior que a dele: uma correção que entrou na camada de baixo fora da janela da de cima nunca sobe.

Se der errado ​

A tabela duplica a cada carga. O destino está com Chave Duplicada e a Gravação não substitui. Marque Chave Única.

O total bate na prévia do Dataflow e não bate no Dashboard. A chave está incompleta e linhas diferentes viraram uma. Acrescente colunas à chave.

Registros somem sem ninguém ter apagado. A coluna de janela muda de valor. Troque para uma data parada ou para Atualizar por chave.

Relacionado ​

Pelo Lumo CLI

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