SQL プールで Delta Lake を使用する

完了

Delta Lake は、Apache Spark のトランザクションリレーショナル ストレージ レイヤーとして設計されています。Azure Synapse Analytics の Spark プールを含む。 ただし、Azure Synapse Analytics には、データ アナリストやエンジニアがデータ レイクまたはリレーショナル データベース内のデータに対して SQL クエリを実行できるようにするサーバーレス SQL プール ランタイムも含まれています。

クエリを できるのは、サーバーレス SQL プール内の Delta Lake テーブルからのデータ のみです。の更新、の挿入、データの削除することはできません。

OPENROWSET を使用してデルタ形式のファイルに対してクエリを実行する

Azure Synapse Analytics のサーバーレス SQL プールには、デルタ形式ファイルの読み取りのサポートが含まれています。これにより、SQL プールを使用して Delta Lake テーブルに対してクエリを実行できます。 この方法は、Spark テーブルと Delta テーブルを使用して大量のデータを処理するが、SQL プールを使用して、処理されたデータのレポートと分析のためのクエリを実行する場合に役立ちます。

次の例では、SQL SELECT クエリは、OPENROWSET 関数を使用してデルタ形式のデータを読み取ります。

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

サーバーレス SQL プールでこのクエリを実行して、指定したファイルの場所に格納されている Delta Lake テーブルから最新のデータを取得できます。

次の例に示すように、データベースを作成し、Delta Lake データ ファイルの場所をカプセル化するデータ ソースを追加することもできます。

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;

Parquet 形式で格納されている Delta Lake データを使用する場合は、文字列の互換性を確保するために、UTF-8 ベースの照合順序を使用してデータベースを作成することをお勧めします。

カタログ テーブルのクエリ

Azure Synapse Analytics のサーバーレス SQL プールには Spark メタストア内のデータベースへの共有アクセス権があるため、Spark SQL を使用して作成されたカタログ テーブルに対してクエリを実行できます。 次の例では、サーバーレス SQL プール内の SQL クエリは、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;

ヒント

サーバーレス SQL プールからの差分テーブルの使用の詳細については、Azure Synapse Analytics ドキュメントの「Azure Synapse Analytics のサーバーレス SQL プールを使用して Delta Lake ファイルに対してクエリを実行する を参照してください。