Como criar um Data Flow de transformação no Synapse Analytics: passo a passo
Este tutorial mostra como criar um Data Flow no Azure Synapse Analytics para transformar dados (limpeza, enriquecimento e agregação) e carregar o resultado para um Data Lake. Aprenderá por que usar Data Flows para ETL/ELT sem código e como evitar erros comuns de performance e de tipos de dados.
Pré-requisitos
- Conta Azure com permissões para criar recursos numa subscrição.
- Workspace do Azure Synapse Analytics criado.
- Linked service para o Azure Data Lake Storage Gen2 configurado no Synapse.
- Ficheiros de exemplo em formato CSV no Data Lake (ex.: /raw/sales/).
- Noções básicas de transformação de dados e SQL.
Passo 1: Criar um Integration Runtime e Linked Service
O Data Flow usa um Integration Runtime gerido para executar transformações. Confirme que o Workspace tem um Azure IR ou crie um Self-hosted IR se precisar de aceder a redes privadas. Depois, defina um Linked Service para o ADLS Gen2 onde estão os ficheiros de origem e onde irá gravar a saída.
// Exemplo conceptual de JSON do Linked Service (abrir em Synapse Studio -> Manage -> Linked services)
{
"name": "LS_ADLS_gen2",
"properties": {
"type": "AzureBlobFS",
"typeProperties": {
"url": "https://minhaaccount.dfs.core.windows.net/",
"servicePrincipalId": "",
"servicePrincipalKey": "",
"tenant": ""
}
}
}
Passo 2: Criar um Data Flow no Synapse Studio
No Synapse Studio vá a Integrate -> Data flows -> New data flow. Escolha um Mapping Data Flow (permite mapear colunas e aplicar transformações). Isto fornece uma interface visual para operações comuns: Select, Filter, Derived Column, Aggregate, Join, Sort e Sink.
Passo 3: Definir o Source e esquema
Adicione um Source e aponte para o Linked Service e o caminho do ficheiro CSV. Configure o formato (delimitador, header) e o esquema: é recomendável definir explicitamente os tipos das colunas para evitar conversões inesperadas.
// Exemplo de configurações no Source (conceptual)
Source:
dataset: /raw/sales/sales_2026.csv
format: csv
firstRowAsHeader: true
schema:
SaleId: long
Date: string
Amount: decimal
Region: string
Passo 4: Limpeza e normalização com Derived Column e Filter
Use Derived Column para normalizar campos (ex.: converter datas, remover espaços) e Filter para eliminar linhas inválidas (ex.: Amount nulo ou negativo). No Derived Column crie expressões simples; ex.: toDate(Date, 'yyyy-MM-dd') para normalizar a data.
// Exemplo de expressões no Derived Column
cleanDate = toDate(Date, 'yyyy-MM-dd')
cleanRegion = trim(Region)
validAmount = iif(isNull(Amount) || Amount <= 0, null(), Amount)
Passo 5: Agregação e enriquecimento com Aggregate e Join
Se quiser calcular métricas (ex.: total de vendas por região e mês) utilize Aggregate: agrupe por Region e month(cleanDate). Para enriquecer, adicione um segundo Source (ex.: tabela de regiões) e faça um Join por chave.
// Exemplo conceptual de Aggregate
groupBy: [Region, year(cleanDate), month(cleanDate)]
aggregates:
totalAmount: sum(Amount)
countSales: count(SaleId)
Passo 6: Configurar o Sink e o formato de saída
Adicione um Sink para gravar o resultado no Data Lake. Escolha o formato de saída: Parquet é recomendado para performance e compressão. Configure partições lógicas (ex.: por ano/mês) para optimizar consultas posteriores.
Sink:
linkedService: LS_ADLS_gen2
path: /processed/sales/
format: parquet
partitionBy: [year, month]
fileNameOption: PerPartition
Passo 7: Testar localmente e optimizar performance
Execute o Data Flow em modo Debug no Synapse Studio com uma amostra de dados. Verifique tempos, memória e cardinalidade de joins. Ajuste as opções de performance do Data Flow (clusterSize, cores) se necessário e evite shuffles desnecessários: prefira agregações prévias e colunas reduzidas.
Verificar o resultado
Confirme que o ficheiro Parquet foi gerado no caminho /processed/sales/ e que as partições (ex.: year=2026/month=9) existem. Pode usar Synapse Studio -> Data -> Linked -> abrir o caminho e pré-visualizar. Alternativamente, execute uma query simples no SQL Serverless para validar esquema e linhas:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://minhaaccount.dfs.core.windows.net/processed/sales/*/*.parquet',
DATA_SOURCE = 'LS_ADLS_gen2',
FORMAT = 'PARQUET'
) AS rows;
Conclusão
Criar um Mapping Data Flow no Azure Synapse Analytics é uma forma visual e poderosa de construir pipelines ETL/ELT sem código complexo, permitindo limpeza, agregação e escrita em Parquet para melhor performance. Passos seguintes: automatizar o Data Flow dentro de um Pipeline com agendamento e monitorização, ou experimentar Sink para Azure SQL/Dedicated SQL Pool. Dica: comece com amostras pequenas no Debug e valide esquemas para evitar erros de tipo em produção.