Usar o Delta Lake em um pool SQL
O Delta Lake foi projetado como uma camada de armazenamento transacional e relacional para o Apache Spark; incluindo pools do Spark no Azure Synapse Analytics. No entanto, o Azure Synapse Analytics também inclui um tempo de execução do pool SQL sem servidor que permite que analistas e engenheiros de dados executem consultas SQL em dados em um data lake ou em um banco de dados relacional.
Nota
Você só pode consultar dados de tabelas Delta Lake em um pool SQL sem servidor, não é possível atualizar, inserir ou excluir dados.
Consultando arquivos formatados delta com OPENROWSET
O pool SQL sem servidor no Azure Synapse Analytics inclui suporte para leitura de arquivos de formato delta; permitindo que você use o pool SQL para consultar tabelas Delta Lake. Essa abordagem pode ser útil em cenários em que você deseja usar tabelas Spark e Delta para processar grandes quantidades de dados, mas usar o pool SQL para executar consultas para relatórios e análise dos dados processados.
No exemplo a seguir, uma consulta SQL SELECT
lê dados de formato delta usando a OPENROWSET
função.
SELECT *
FROM
OPENROWSET(
BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
FORMAT = 'DELTA'
) AS deltadata
Você pode executar essa consulta em um pool SQL sem servidor para recuperar os dados mais recentes da tabela Delta Lake armazenados no local do arquivo especificado.
Você também pode criar um banco de dados e adicionar uma fonte de dados que encapsula o local dos arquivos de dados do Delta Lake, conforme mostrado neste exemplo:
CREATE DATABASE MyDB
COLLATE Latin1_General_100_BIN2_UTF8;
GO;
USE MyDB;
GO
CREATE EXTERNAL DATA SOURCE DeltaLakeStore
WITH
(
LOCATION = 'https://mystore.dfs.core.windows.net/files/delta/'
);
GO
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'mytable',
DATA_SOURCE = 'DeltaLakeStore',
FORMAT = 'DELTA'
) as deltadata;
Nota
Ao trabalhar com dados Delta Lake, que são armazenados no formato Parquet, geralmente é melhor criar um banco de dados com um agrupamento baseado em UTF-8 para garantir a compatibilidade da cadeia de caracteres.
Consultando tabelas de catálogo
O pool SQL sem servidor no Azure Synapse Analytics tem acesso compartilhado a bancos de dados no metastore do Spark, para que você possa consultar tabelas de catálogo que foram criadas usando o Spark SQL. No exemplo a seguir, uma consulta SQL em um pool SQL sem servidor consulta uma tabela de catálogo que contém dados Delta Lake:
-- By default, Spark catalog tables are created in a database named "default"
-- If you created another database using Spark SQL, you can use it here
USE default;
SELECT * FROM MyDeltaTable;
Gorjeta
Para obter mais informações sobre como usar tabelas delta de um pool SQL sem servidor, consulte Consultar arquivos Delta Lake usando pool SQL sem servidor no Azure Synapse Analytics na documentação do Azure Synapse Analytics.