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 ファイルに対してクエリを実行する を参照してください。