Uso de Delta Lake en un grupo de SQL

Completado

Delta Lake está diseñado como una capa de almacenamiento transaccional y relacional para Apache Spark; incluidos los grupos de Spark en Azure Synapse Analytics. Sin embargo, Azure Synapse Analytics también incluye un entorno de ejecución de grupo de SQL sin servidor que permite a los analistas de datos e ingenieros ejecutar consultas SQL en los datos de un lago de datos o en una base de datos relacional.

Nota

Solo puede consultar datos de tablas de Delta Lake en un grupo de SQL sin servidor; no se pueden actualizar, insertar ni eliminar datos.

Consulta de archivos con formato delta con OPENROWSET

El grupo de SQL sin servidor de Azure Synapse Analytics incluye compatibilidad con la lectura de archivos de formato delta, lo que le permite usar el grupo de SQL para consultar tablas de Delta Lake. Este enfoque puede ser útil en escenarios en los que quiere usar tablas Spark y Delta para procesar grandes cantidades de datos, pero usa el grupo de SQL para ejecutar consultas para generar informes de los datos procesados y analizar estos.

En el ejemplo siguiente, una consulta de SQL SELECT lee los datos en formato delta mediante la función OPENROWSET.

SELECT *
FROM
    OPENROWSET(
        BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
        FORMAT = 'DELTA'
    ) AS deltadata

Puede ejecutar esta consulta en un grupo de SQL sin servidor para recuperar los datos más recientes de la tabla de Delta Lake almacenada en la ubicación de archivo especificada.

También puede crear una base de datos y agregar un origen de datos que encapsula la ubicación de los archivos de datos de Delta Lake, como se muestra en este ejemplo:

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

Al trabajar con datos de Delta Lake, que se almacenan en formato Parquet, generalmente es mejor crear una base de datos con una intercalación basada en UTF-8 para garantizar la compatibilidad de cadenas.

Consulta de tablas de catálogo

El grupo de SQL sin servidor de Azure Synapse Analytics tiene acceso compartido a las bases de datos del metastore de Spark, por lo que puede consultar las tablas de catálogo que se crearon mediante Spark SQL. En el ejemplo siguiente, una consulta de SQL en un grupo de SQL sin servidor consulta una tabla de catálogo que contiene datos de 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;

Sugerencia

Para más información sobre el uso de tablas Delta desde un grupo de SQL sin servidor, consulte Consulta de archivos de Delta Lake mediante un grupo de SQL sin servidor en Azure Synapse Analytics en la documentación de Azure Synapse Analytics.