Mapping Data Flows no ADF: transformações ETL visuais sem código
João Barros
07 de February de 2025
1 min de leitura
Os Mapping Data Flows no Azure Data Factory permitem construir transformações ETL complexas através de uma interface visual, sem escrever código Spark. A execução é feita num cluster Spark gerido pela Microsoft, com escalabilidade automática.
Arquitectura de um Data Flow
Source → [Transformações] → Sink
Transformações disponíveis:
Select / Rename — seleccionar e renomear colunas
Filter — filtrar linhas por condição
Derived Column — criar/modificar colunas com expressões
Aggregate — GROUP BY com funções de agregação
Join / Lookup — juntar datasets
Conditional Split — dividir fluxo por condição
Flatten — desnormalizar estruturas JSON aninhadas
Window — funções de janela (ROW_NUMBER, LAG, etc.)
Sink — destino de escrita
Expressão em Derived Column
// Calcular margem e normalizar país
margem_pct: toDecimal((receita - custo) / receita * 100, 2)
pais_norm: upper(trim(pais))
data_carga: currentTimestamp()
ano_mes: toString(year(data_venda)) + '-' + lpad(toString(month(data_venda)), 2, '0')
Aggregate — GROUP BY com múltiplas métricas
Group by: pais_norm, ano_mes
Aggregates:
receita_total: sum(receita)
num_transacoes: count(1)
ticket_medio: avg(receita)
max_venda: max(receita)
Debug e performance
// Activar debug cluster (demora ~2 min a arrancar)
// Preview de dados em cada transformação — essencial para validar
// Optimizações:
- Source: enable partition → paralelismo na leitura
- Sink: set batch size = 10000 para SQL
- Evitar Cartesian joins (sem condição de join)
- Use Broadcast para dimensões pequenas (< 1GB)
Conclusão
Os Mapping Data Flows tornam transformações ETL complexas acessíveis a engenheiros sem experiência em Spark. Para equipas com analistas SQL, a sintaxe de expressões é familiar. O trade-off é arranque lento do cluster Spark — use-os para batches, não para micro-batches frequentes.