次の方法で共有


Azure Synapse Analytics のサーバーレス SQL プールを使用してクエリの結果をストレージに格納する

この記事では、サーバーレス SQL プールを使用してクエリの結果をストレージに格納する方法を学習します。

前提条件

最初の手順として、クエリを実行するデータベースを作成します。 次に、そのデータベースでセットアップ スクリプトを実行して、オブジェクトを初期化します。 このセットアップ スクリプトにより、データ ソース、データベース スコープの資格情報、これらのサンプルでデータの読み取りに使用される外部ファイル形式が作成されます。

この記事の手順に従って、データ ソース、データベース スコープの資格情報、出力ストレージへのデータの書き込みに使用される外部ファイル形式を作成してください。

CREATE EXTERNAL TABLE AS SELECT

CREATE EXTERNAL TABLE AS SELECT (CETAS) ステートメントを使用して、クエリ結果をストレージに格納することができます。

Note

環境を反映するように、クエリのこれらの値を変更します。

  • mydbname - 作成したデータベースの名前に変更します
  • storage-account-sas - 結果を書き込むストレージ アカウントの Shared Access Signature
  • your-storage-account-name - 結果を書き込むストレージ アカウントの名前 ('csv' という名前のコンテナーがあることを確認してください。あるいは、ここでもコンテナーの名前を変更してください)
USE [mydbname];
GO

CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'storage-account-sas';
GO

CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
    LOCATION = 'https://your-storage-account-name.blob.core.windows.net/csv', CREDENTIAL = [SasTokenWrite]
);
GO

CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO

CREATE EXTERNAL TABLE [dbo].[PopulationCETAS] WITH (
        LOCATION = 'populationParquet/',
        DATA_SOURCE = [MyDataSource],
        FILE_FORMAT = [ParquetFF]
) AS
SELECT
    *
FROM
    OPENROWSET(
        BULK 'csv/population-unix/population.csv',
        DATA_SOURCE = 'sqlondemanddemo',
        FORMAT = 'CSV', PARSER_VERSION = '2.0'
    ) WITH (
        CountryCode varchar(4),
        CountryName varchar(64),
        Year int,
        PopulationCount int
    ) AS r;

Note

このスクリプトを変更し、ターゲットの場所を変更して再度実行する必要があります。 データが既に存在する場所に外部テーブルを作成することはできません。

外部テーブルを使用する

CETAS で作成した外部テーブルは、通常の外部テーブルと同じように使用できます。

Note

クエリの最初の行 ([mydbname]) を、自分で作成したデータベースを使用するように変更してください。

USE [mydbname];
GO

SELECT
    CountryName, PopulationCount
FROM PopulationCETAS
WHERE
    [Year] = 2019
ORDER BY
    [PopulationCount] DESC;

解説

結果を保存したら、外部テーブルのデータを変更することはできません。 CETAS は前回の実行で作成された基になるデータを上書きしないため、このスクリプトを繰り返すことはできません。

現在サポートされている出力の種類は、Parquet と CSV だけです。

さまざまな種類のファイルに対するクエリの実行については、単一の CSV ファイルに対するクエリの実行Parquet ファイルに対するクエリの実行、および JSON ファイルに対するクエリの実行に関するページを参照してください。