ステージング テーブルを読み込む

完了

データ ウェアハウスを読み込む最も一般的なパターンの 1 つは、ソース システムからデータ レイク内のファイルにデータを転送し、ファイルのデータをステージング テーブルに取り込んだ後、SQL ステートメントを使ってステージング テーブルからディメンション テーブルとファクト テーブルにデータを読み込む方法です。 通常、データの読み込みは、データ ウェアハウスへの挿入と更新が一定の間隔 (毎日、毎週、毎月など) で行われる定期的なバッチ プロセスとして実行されます。

ステージング テーブルの作成

多くの整理されたウェアハウスには、データベースをステージングするための標準構造があり、データのステージングに特定のスキーマを使用する場合もあります。 次のコード例では、最終的にディメンション テーブルに読み込まれる製品データ用のステージング テーブルを作成します。

Note

この例では、既定の dbo スキーマにステージング テーブルを作成します。 また、ステージング テーブル用に意味のある名前 (stage など) を付けて個別のスキーマを作成し、アーキテクトとユーザーがスキーマの目的を理解できるようにすることもできます。

CREATE TABLE dbo.StageProduct
(
    ProductID NVARCHAR(10) NOT NULL,
    ProductName NVARCHAR(200) NOT NULL,
    ProductCategory NVARCHAR(200) NOT NULL,
    Color NVARCHAR(10),
    Size NVARCHAR(10),
    ListPrice DECIMAL NOT NULL,
    Discontinued BIT NOT NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

COPY コマンドの使用

次の例に示すように、COPY ステートメントを使用してデータ レイクからデータを読み込むことができます。

Note

これは通常、ハイ パフォーマンス スループットのためにステージング テーブルを読み込むために推奨される方法です。

COPY INTO dbo.StageProduct
    (ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
    FILE_TYPE = 'PARQUET',
    MAXERRORS = 0,
    IDENTITY_INSERT = 'OFF'
);

ヒント

COPY ステートメントの詳細については、Transact-SQL ドキュメントの「COPY (Transact-SQL)」を参照してください。

外部テーブルの使用

読み込まれるデータが適切な構造を持つファイル内に保存されている場合は、ファイルの場所を参照する外部テーブルを作成する方が効果的である可能性があります。 これにより、データをリレーショナル ストアに読み込むことなく、ソース ファイルから直接読み取ることができます。 次の例は、Azure Synapse Analytics ワークスペースに関連付けられているデータ レイク内のファイルを参照する外部テーブルを作成する方法を示しています。

CREATE EXTERNAL TABLE dbo.ExternalStageProduct
 (
     ProductID NVARCHAR(10) NOT NULL,
     ProductName NVARCHAR(10) NOT NULL,
 ...
 )
WITH
 (
    DATE_SOURCE = StagedFiles,
    LOCATION = 'folder_name/*.parquet',
    FILE_FORMAT = ParquetFormat
 );
GO

ヒント

外部テーブルの使用の詳細については、Azure Synapse Analytics ドキュメントの「Synapse SQL で外部テーブルを使用する」を参照してください。