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

Como copiar e transformar JSON para Parquet em Azure Data Factory

João Barros 26 de August de 2026 4 min de leitura

Este tutorial mostra como copiar ficheiros JSON de um contentor do Azure Blob Storage para ficheiros Parquet num Data Lake usando o Azure Data Factory, com uma transformação leve para normalizar campos. Converter JSON para Parquet reduz custos e melhora o desempenho em análises.

Pré-requisitos

  • Conta Azure com permissões para criar recursos
  • Azure Data Factory já criada
  • Azure Blob Storage com alguns ficheiros JSON de exemplo
  • Azure Data Lake Storage Gen2 ou outro Blob destino para Parquet

Passo 1: Criar Linked Services para origem e destino

É preciso ligar o Azure Data Factory ao armazenamento de origem (Blob) e ao destino (ADLS Gen2 ou outro Blob). Use Managed Identity ou Service Principal para evitar credenciais hardcoded.

No portal do Azure Data Factory: Manage > Linked services > New.

// Exemplo JSON para criar Linked Service via ARM/REST (sintaxe simplificada)
{
  "name": "LS_Blob_Storage",
  "properties": {
    "type": "AzureBlobStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=..."
    }
  }
}

Passo 2: Criar Datasets de origem JSON e destino Parquet

O Dataset de origem aponta para o contentor e o caminho com ficheiros JSON. O Dataset destino deve ter formato Parquet. Configure o esquema ou deixe o esquema ser inferido no Mapping Data Flow/Copy Activity.

// Dataset exemplo (simplificado)
{
  "name": "DS_Json_Incoming",
  "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "format": { "type": "JsonFormat", "filePattern": "setOfObjects" },
      "fileName": "*.json",
      "folderPath": "input/json"
    }
  }
}
// Dataset destino Parquet (simplificado)
{
  "name": "DS_Parquet_Output",
  "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "format": { "type": "ParquetFormat" },
      "folderPath": "output/parquet"
    }
  }
}

Passo 3: Decidir Copy Activity vs Mapping Data Flow

Se precisa apenas da conversão do formato (JSON → Parquet) sem transformação de esquema complexa, use a Copy Activity para ser mais barato e simples. Para normalizar campos, desagregar arrays ou juntar estruturas complexas, use o Mapping Data Flow.

Passo 4: Exemplo com Copy Activity (conversão simples)

Crie um pipeline com uma atividade Copy. No Source, selecione o Dataset JSON e configure o file pattern; no Sink, selecione DS_Parquet_Output. Assinale "Enable schema drift" se tiveres esquemas variáveis.

// Copy Activity JSON->Parquet (pseudocódigo de pipeline)
{
  "name": "CopyJsonToParquet",
  "type": "Copy",
  "inputs": [{ "referenceName": "DS_Json_Incoming" }],
  "outputs": [{ "referenceName": "DS_Parquet_Output" }],
  "typeProperties": {
    "enableStaging": false
  }
}

Passo 5: Exemplo com Mapping Data Flow (normalizar arrays)

Se os JSON contêm arrays que precisas de «explodir» para linhas, cria um Mapping Data Flow com Source (formato JSON), uma transformação Flatten/Unroll e depois um Sink para Parquet. Define o esquema no Sink para Parquet.

// Flow simplificado:
Source(JSON) -> Select(columns) -> Flatten(unrollBy: items) -> DerivedColumn(normalize campos) -> Sink(Parquet)

No Data Flow, configura a coluna que contém arrays em Unroll By. Usa Derived Column para combinar ou formatar campos (ex.: concatenar id + subid).

Passo 6: Executar e parametrizar para vários ficheiros

Para processar múltiplos ficheiros ou pastas, parametriza o Dataset (folderPath, fileName) e no pipeline passa o parâmetro. Usa ForEach se precisares de lógica por ficheiro.

// Exemplo de parâmetro no pipeline
pipeline.parameters.folder = 'input/json'
// Passa para o Dataset: @pipeline().parameters.folder

Verificar o resultado

Valida no destino: entra no contentor destino e confirma ficheiros .parquet gerados. Podes abrir um ficheiro Parquet com o Azure Storage Explorer ou usar o Azure Synapse/Databricks para ler. No ADF Monitor verifica a execução do pipeline e os logs de cópia para erros comuns (incompatibilidade de esquema, permissões, ficheiros corrompidos).

Conclusão

Converter JSON para Parquet em Azure Data Factory melhora o desempenho e reduz custos de armazenamento. Começa com a Copy Activity para cenários simples e usa o Mapping Data Flow para normalizações/arrays. Próximo passo: testar a leitura dos Parquet no Power BI ou no Azure Synapse para comprovar os ganhos. Dica: começa por um conjunto reduzido de ficheiros para validar esquemas antes de processar em massa — tens questões sobre arrays ou schema drift no teu JSON?