Cómo integrar Azure Data Lake con Synapse Serverless: paso a paso
Esta guía muestra cómo integrar un contenedor en Azure Data Lake Storage Gen2 con SQL Serverless en Azure Synapse Analytics para consultar archivos Parquet y crear External Tables. Es útil para analytics sin ETL, reduciendo latencia y costes al leer datos directamente del Data Lake.
Requisitos previos
- Cuenta Azure con permisos para crear recursos (Resource Group, Storage, Synapse).
- Azure Data Lake Storage Gen2 con un contenedor y algunos archivos Parquet o CSV.
- Workspace de Azure Synapse Analytics con SQL Serverless habilitado.
- Acceso a Synapse Studio y, opcionalmente, Azure Storage Explorer.
Paso 1: Configurar el acceso (Shared Access Signature o Managed Identity)
Es necesario dar acceso de Synapse al contenedor del Data Lake. Para desarrollo rápido, puede generar una SAS (Shared Access Signature) con permisos de lectura/listado. En producción, prefiera Managed Identity y el rol Storage Blob Data Reader en el contenedor.
# 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
Paso 2: Crear un Data Source externo en Synapse Serverless
En Synapse Studio abra el área de Develop y cree un nuevo query SQL (serverless). Vamos a registrar el contenedor como un 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' );
Si usa SAS, puede incluir la cadena en el LOCATION o usar CREDENTIAL. Para Managed Identity, asegure que el workspace tiene la identidad asignada y el rol en el Storage.
Paso 3: Consultar archivos con OPENROWSET (ejemplo Parquet y CSV)
OPENROWSET permite leer archivos directamente sin crear tabla persistente. Útil para exploración rápida y validación del 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];
Paso 4: Crear External File Format y External Table para consultas repetidas
Si planea consultas frecuentes, crear External File Format y External Table hace que la experiencia sea más consistente y con mejor rendimiento (metadatos 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: el comando CREATE EXTERNAL TABLE AS SELECT (CETAS) permite crear archivos a partir de una query; aquí usamos SELECT TOP 0 para crear solo metadatos si es necesario. Ajuste el esquema conforme su archivo o use PolyBase/OPENROWSET para inferir.
Paso 5: Optimizar consultas y tratar errores comunes
Errores comunes: 401/403 (permisos), rutas incorrectas, esquema inconsistente entre archivos. Para optimizar: particione archivos por carpeta (por ej. year=2025/month=10), use Parquet columnar, y evite listar millones de archivos en una única query.
-- Exemplo de filtro por pasta para reducir ficheiros lidos SELECT * FROM OPENROWSET( BULK 'https://minhaStorageAccount.dfs.core.windows.net/meu-container/year=2025/month=10/*.parquet', FORMAT='PARQUET' ) AS [result];
Verificar el resultado
Ejecute una query SELECT simple contra la External Table o OPENROWSET para confirmar la lectura: vea filas y tipos de datos, verifique el tiempo de ejecución y si aparecen errores de autorización. Pruebe también la lectura de un archivo específico para validar el esquema con menos datos.
Conclusión
Con estos pasos integró Azure Data Lake con Synapse Serverless, pudiendo consultar archivos Parquet/CSV directamente y crear External Tables para trabajo repetido. Próximos pasos: migrar a Managed Identity para seguridad, particionar datos y crear views para simplificar consultas. Consejo: cuando vea 403, verifique primero la identidad usada y los roles asignados.