SQL Serverless no Synapse: consultar Data Lake sem infraestrutura
João Barros
26 de September de 2024
1 min de leitura
O Serverless SQL Pool no Azure Synapse Analytics é um motor de query que permite consultar ficheiros no Azure Data Lake Storage com T-SQL padrão, sem configurar infraestrutura. Paga apenas pelas queries executadas (TB processados).
Consultar Parquet directamente
-- Ler ficheiro Parquet do ADLS
SELECT TOP 100 *
FROM OPENROWSET(
BULK 'https://stadatalake.dfs.core.windows.net/silver/vendas/**',
FORMAT = 'PARQUET'
) AS [result];
-- Com schema explícito para melhor performance
SELECT *
FROM OPENROWSET(
BULK 'https://stadatalake.dfs.core.windows.net/silver/vendas/',
FORMAT = 'PARQUET'
)
WITH (
data_venda DATE,
id_cliente INT,
receita DECIMAL(18,2),
pais VARCHAR(100)
) AS vendas
WHERE data_venda >= '2024-01-01';
Criar External Tables (vistas persistentes sobre ficheiros)
-- Data source apontando para ADLS
CREATE EXTERNAL DATA SOURCE ds_silver
WITH (LOCATION = 'https://stadatalake.dfs.core.windows.net/silver');
-- Formato Parquet
CREATE EXTERNAL FILE FORMAT ff_parquet
WITH (FORMAT_TYPE = PARQUET, DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec');
-- External table
CREATE EXTERNAL TABLE dbo.ext_vendas (
data_venda DATE, id_cliente INT, receita DECIMAL(18,2), pais VARCHAR(100)
)
WITH (
LOCATION = 'vendas/',
DATA_SOURCE = ds_silver,
FILE_FORMAT = ff_parquet
);
-- Consultar como tabela normal
SELECT pais, SUM(receita) AS total
FROM dbo.ext_vendas
WHERE data_venda >= '2024-01-01'
GROUP BY pais
ORDER BY total DESC;
Controlo de acesso com credenciais
-- Acesso via Managed Identity do Synapse
CREATE DATABASE SCOPED CREDENTIAL synapse_msi
WITH IDENTITY = 'Managed Identity';
-- Usar na data source
CREATE EXTERNAL DATA SOURCE ds_silver_secure
WITH (LOCATION = 'https://stadatalake.dfs.core.windows.net/silver',
CREDENTIAL = synapse_msi);
Conclusão
O Serverless SQL Pool é ideal para exploração ad-hoc do Data Lake, criação de data marts virtuais e exposição de dados a ferramentas BI sem mover dados. O modelo pay-per-query torna-o económico para queries ocasionais sobre grandes volumes de dados.