(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Azure Synapse Analytics
Azure Synapse Analytics 1 min

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.

Partilhar: