Skip to content

Como o HorusETL funciona ​

Tipo
Conceito
Para
Engenharia de dados

Cinco peças entram em toda carga do HorusETL: o Dataflow, os nós que o compõem, as conexões com os bancos, o Agente ETL que executa e o agendamento que diz quando. O resultado vai para uma tabela do HorusDW, onde Aplicações e Dashboards o leem.

O agendamento dispara o Agente ETL, que executa o Dataflow. O Dataflow lê o banco de origem pela conexão, transforma o dado e grava numa tabela do HorusDWO agendamento dispara o Agente ETL, que executa o Dataflow. O Dataflow lê o banco de origem pela conexão, transforma o dado e grava numa tabela do HorusDW

As peças ​

Um Dataflow é uma sequência de nós ligados, salva no Lumo. Ele pertence a uma Mesa de Dados, como as tabelas, e grava numa tabela só. Mesa, Minha Mesa e publicação estão em Mesas e publicação.

Um nó é um passo do Dataflow. A paleta do editor separa os nós em grupos:

GrupoO que faz
Bancos de Dadosconsulta uma das conexões do Tenant
Arquivos, Web & APIs, Cloudlê planilha, CSV, Parquet, API, Google Sheet, tabela do Lumo ou arquivo do Datalake
Transformaçõesjunta, filtra, une e calcula com SQL, Python e outros
Inteligência Artificialclassifica texto com IA
Configuradorcalcula variáveis antes da carga, em Python, JavaScript ou HTTP
Destinosgrava no Datawarehouse, no Datalake, em Parquet local ou em Google Sheet

A referência de cada nó está em Nós.

Uma conexão guarda o endereço e as credenciais de um banco de origem. Ela pertence a um Agente ETL e aparece na paleta do editor para os Dataflows daquele Agente. Ver Cadastrar uma conexão de banco.

O Agente ETL é o programa que executa os Dataflows. Ele roda numa máquina Windows ou num container Docker, abre a conexão com a origem, processa o dado e envia o resultado. Cada Dataflow está ligado a um Agente.

Um agendamento diz quando um ou mais Dataflows rodam, em que ordem e com que janela. Ver Agendar um Dataflow.

Onde o Agente ETL roda ​

O Agente precisa enxergar a origem. Para um banco que só aceita conexão da rede interna, ele roda numa máquina dentro dessa rede; um Agente fora dela recebe "conexão recusada" por mais certa que esteja a senha. Para uma origem na internet, como uma API ou um banco em nuvem, o Agente pode rodar na nuvem da HorusBI e atender vários Tenants.

O Agente é quem abre a conexão com o Lumo e a mantém aberta. Nenhuma porta de entrada precisa ser liberada no firewall. Os endereços e o que trafega por cada um estão em Rede e segurança.

O caminho de uma execução ​

  1. O agendamento chega na hora, ou alguém pede a execução na tela. O Lumo manda a ordem ao Agente pela conexão já aberta, com o contexto da execução: Total, Incremental, uma janela de datas ou Sincronizar exclusões.
  2. O Agente calcula as variáveis da execução (StartDate, EndDate, LastDataPoint e as demais) e roda primeiro os Configuradores, com os nós de que eles dependem.
  3. Os nós rodam em ordem. A leitura de banco chega linha a linha e o resultado é escrito em blocos de 5 mil linhas, sem carregar a tabela inteira na memória. Um nó Python roda num processo separado.
  4. O nó de destino converte o resultado em Parquet e envia ao Lumo, que apaga no destino o que a Gravação manda apagar e insere o que chegou. Os tipos de carga estão em Tipos de carga.
  5. O Agente devolve o status, as mensagens e as contagens de linhas, que aparecem nos logs do agendamento e do Dataflow.

Fila e paralelismo ​

Os agendamentos de um mesmo Tenant rodam um de cada vez, em fila, no mesmo Agente. Isso protege a origem e o destino de várias extrações ao mesmo tempo. O limite Agendamentos Simultâneos do Agente vale entre Tenants diferentes, o que importa num Agente na nuvem que atende muitos Tenants.

Duas exceções furam a fila. A execução pedida na tela roda na hora. E um agendamento marcado como Executar em paralelo, sem esperar a fila roda numa pista à parte, com limite próprio na tela do Agente. Em qualquer caso, um mesmo Dataflow nunca roda duas vezes ao mesmo tempo.

Se os agendamentos de um Tenant somam mais tempo do que o intervalo entre eles, a fila nunca esvazia e as execuções atrasam cada vez mais. Ver Dimensionar o Agente ETL.

O Agente precisa estar online ​

A execução depende do Lumo em duas pontas: a ordem de rodar sai do Lumo, e a gravação no HorusDW passa por ele. Com o Agente offline, o agendamento não roda e a execução manual recusa com "O Agente ETL precisa estar online para executar uma carga!". Quando o atraso passa do limite definido no agendamento, ele aparece em Eventos.

Onde isso aparece ​

  • No menu do HorusETL: Data Flows, Agendamentos, Conexões, Configurar Agentes ETL, Eventos e Performance de Execuções.
  • No topo da tela, o Agente ETL em uso; ele filtra Dataflows, conexões e agendamentos.
  • Para montar o primeiro Dataflow do começo ao fim, ver Seu primeiro Dataflow.