Usar o Delta Lake em um pool de SQL

Concluído

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 runtime de pool de SQL sem servidor que permite que analistas de dados e engenheiros executem consultas SQL em dados em um data lake ou em um banco de dados relacional.

Observação

Você só pode consultar dados de tabelas do Delta Lake em um pool de SQL sem servidor; não é possível atualizar, inserir nem excluir dados.

Consultar arquivos formatados em delta com OPENROWSET

O pool de SQL sem servidor no Azure Synapse Analytics inclui suporte à leitura de arquivos de formato delta, permitindo que você use o pool de SQL para consultar tabelas do 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 de SQL para executar consultas para relatórios e análise dos dados processados.

No exemplo a seguir, uma consulta SQL SELECT lê dados no formato delta usando a função OPENROWSET.

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 de SQL sem servidor para recuperar os dados mais recentes da tabela do Delta Lake armazenada 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;

Observação

Ao trabalhar com dados do Delta Lake, que são armazenados no formato Parquet, geralmente é melhor criar um banco de dados com uma ordenação baseada em UTF-8, a fim de garantir a compatibilidade de cadeia de caracteres.

Consultar tabelas de catálogo

O pool de 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 de SQL sem servidor consulta uma tabela de catálogo que contém dados do 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;

Dica

Para obter mais informações sobre como usar tabelas delta de um pool de SQL sem servidor, confira Consultar arquivos do Delta Lake usando o pool de SQL sem servidor no Azure Synapse Analytics na documentação do Azure Synapse Analytics.