Como integrar Azure Data Lake com Synapse Serverless: passo a passo
Este guia mostra como integrar um container em Azure Data Lake Storage Gen2 com SQL Serverless em Azure Synapse Analytics para consultar ficheiros Parquet e criar External Tables. É útil para analytics sem ETL, reduzindo latência e custos ao ler dados diretamente do Data Lake.
Pré-requisitos
- Conta Azure com permissões para criar recursos (Resource Group, Storage, Synapse).
- Azure Data Lake Storage Gen2 com um container e alguns ficheiros Parquet ou CSV.
- Workspace do Azure Synapse Analytics com SQL Serverless habilitado.
- Acesso ao Synapse Studio e, opcionalmente, Azure Storage Explorer.
Passo 1: Configurar o acesso (Shared Access Signature ou Managed Identity)
É necessário dar acesso do Synapse ao container do Data Lake. Para desenvolvimento rápido, pode gerar uma SAS (Shared Access Signature) com permissões de leitura/listagem. Em produção, prefira Managed Identity e a role Storage Blob Data Reader no container.
# Exemplo de geração de SAS via Azure CLI (opcional) az storage container generate-sas \ --name meu-container \ --account-name minhaStorageAccount \ --permissions rl \ --expiry 2030-01-01T00:00:00Z \ --https-only \ --output tsv
Passo 2: Criar um Data Source externo no Synapse Serverless
No Synapse Studio abra a área de Develop e crie um novo query SQL (serverless). Vamos registar o container como um external data source para facilitar consultas.
-- Substituir o URL pelo endpoint do seu container + SAS (se aplicável) CREATE EXTERNAL DATA SOURCE MyDataLake WITH ( LOCATION = 'https://minhaStorageAccount.dfs.core.windows.net/meu-container' );
Se usar SAS, pode incluir a string no LOCATION ou usar CREDENTIAL. Para Managed Identity, assegure que o workspace tem a identidade atribuída e a role no Storage.
Passo 3: Consultar ficheiros com OPENROWSET (exemplo Parquet e CSV)
OPENROWSET permite ler ficheiros directamente sem criar tabela persistente. Útil para exploração rápida e validação do esquema.
-- Ler ficheiros Parquet SELECT TOP 100 * FROM OPENROWSET( BULK 'https://minhaStorageAccount.dfs.core.windows.net/meu-container/pasta/*.parquet', FORMAT='PARQUET' ) AS [result]; -- Ler ficheiros CSV (com header e separador) SELECT * FROM OPENROWSET( BULK 'https://minhaStorageAccount.dfs.core.windows.net/meu-container/pasta/*.csv', FORMAT='CSV', PARSER_VERSION='2.0' ) WITH ( Col1 int, Col2 varchar(100), Col3 datetime ) AS [csv];
Passo 4: Criar External File Format e External Table para consultas repetidas
Se planeia consultas frequentes, criar External File Format e External Table torna a experiência mais consistente e performática (metadados centralizados).
-- External File Format para Parquet CREATE EXTERNAL FILE FORMAT ParquetFormat WITH ( FORMAT_TYPE = PARQUET ); -- External Table apontando para o caminho no Data Lake CREATE EXTERNAL TABLE dbo.MyExternalParquet WITH ( LOCATION = 'pasta/subpasta', DATA_SOURCE = MyDataLake, FILE_FORMAT = ParquetFormat ) AS SELECT TOP 0 * FROM OPENROWSET( BULK 'https://minhaStorageAccount.dfs.core.windows.net/meu-container/pasta/subpasta/*.parquet', FORMAT='PARQUET' ) AS t;
Nota: o comando CREATE EXTERNAL TABLE AS SELECT (CETAS) permite criar ficheiros a partir de uma query; aqui usamos SELECT TOP 0 para criar apenas metadados se necessário. Ajuste o esquema conforme o seu ficheiro ou use PolyBase/OPENROWSET para inferir.
Passo 5: Optimizar consultas e lidar com erros comuns
Erros comuns: 401/403 (permissões), caminhos incorretos, esquema inconsistente entre ficheiros. Para optimizar: particione ficheiros por pasta (por ex. year=2025/month=10), use Parquet columnar, e evite listar milhões de ficheiros numa única query.
-- Exemplo de filtro por pasta para reduzir ficheiros lidos SELECT * FROM OPENROWSET( BULK 'https://minhaStorageAccount.dfs.core.windows.net/meu-container/year=2025/month=10/*.parquet', FORMAT='PARQUET' ) AS [result];
Verificar o resultado
Execute uma query SELECT simples contra a External Table ou OPENROWSET para confirmar a leitura: veja linhas e tipos de dados, verifique o tempo de execução e se aparecem erros de autorização. Teste também a leitura de um ficheiro específico para validar o esquema com menos dados.
Conclusão
Com estas etapas integrou o Azure Data Lake com Synapse Serverless, podendo consultar ficheiros Parquet/CSV directamente e criar External Tables para trabalho repetido. Próximos passos: migrar para Managed Identity para segurança, particionar dados e criar views para simplificar consultas. Dica: quando vir 403, verifique primeiro a identidade usada e as roles atribuídas.