fábrica (transformações)¶
fábrica
nós de fábrica operam sobre os dados em memória, entre a fonte e o destino. cada operação recebe a tabela do nó anterior como entrada e produz uma nova tabela como saída — sem exigir que você escreva sql manualmente (embora sempre exista a opção de sql livre, para quem prefere).
operações disponíveis¶
| nó | o que faz | quando usar |
|---|---|---|
| filtrar linhas | remove registros que não atendem a uma condição | limpar dados antes de persistir; recortar um subconjunto de negócio |
| renomear campo | renomeia uma ou mais colunas | padronizar nomes de coluna vindos de fontes com nomenclatura diferente |
| remover campos | remove colunas indesejadas | descartar colunas sensíveis ou irrelevantes antes de persistir |
| remover nulos/vazios | remove linhas com valores nulos/vazios em colunas-chave | garantir completude antes de um quality gate |
| adicionar campo | cria nova coluna com expressão | derivar métricas, flags e campos calculados |
| converter tipo | faz cast de tipo de uma coluna | corrigir tipos inferidos incorretamente antes do bronze |
| deduplicar | remove registros duplicados | eliminar reprocessamento ou duplicidade de origem |
| agregar | group by com funções de agregação | construir métricas de camada gold |
| validar schema | valida tipos/obrigatoriedade e descarta ou barra linhas inválidas | qualidade de dados em linha, antes do quality gate |
| mapeamento (de-para) | seleciona, renomeia e tipifica campos em um único passo | normalizar um payload de origem para o schema de destino |
| expandir json | achata campos de uma coluna json/jsonb em novas colunas tipadas | dados de apis/mongo com colunas json aninhadas |
| explodir array | transforma cada elemento de um array em uma linha | normalizar campos de lista (tags, itens de pedido) |
| pivot | transforma valores de uma coluna em novas colunas | relatórios wide (ex: meses como colunas) |
| unpivot | transforma múltiplas colunas em linhas | normalizar planilhas wide para long antes de análises |
| expandir struct | expande todos os campos de uma coluna struct em colunas individuais | achatar objetos aninhados de uma única vez |
| python script | transformação customizada escrita em python | lógica que não é expressável em sql/lowcode |
| join | une duas tabelas de nós diferentes por chave, com inner/left/right/full | combinar dados de duas fontes distintas no mesmo pipeline |
| sql | sql livre referenciando outros nós do pipeline | transformações complexas melhor expressas em sql puro |
como escolher entre join, merge e sql¶
o builder tem três formas de combinar/consolidar dados que parecem sobrepostas à primeira vista — mas servem propósitos diferentes:
| nó | categoria | o que realmente faz |
|---|---|---|
| join | fábrica / runtime | join relacional de verdade: combina colunas de dois nós por uma condição de igualdade (inner/left/right/full) |
| merge | controle | consolida múltiplos nós upstream em um único dataset (empilhamento schema-aligned, não é join por chave) |
| sql | controle / runtime | sql livre sobre um ou mais nós — a ferramenta certa quando a lógica não cabe em um nó lowcode |
se você precisa cruzar duas tabelas por uma chave comum (ex: pedidos + clientes por cliente_id), use join. se você precisa consolidar dados de múltiplas fontes com o mesmo formato em um único dataset (ex: vendas da filial a + vendas da filial b), use merge. se a lógica é complexa demais para qualquer um dos dois, use sql.
todas as operações rodam em memória
nós de fábrica não persistem nada — o resultado só é gravado no lakehouse quando chega a um nó lakehouse writer. isso permite encadear quantas transformações forem necessárias sem custo de escrita intermediária.