(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar um Data Flow de transformação no Synapse Analytics: passo a passo

João Barros 30 de September de 2026 4 min de leitura

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.