ステージング テーブルを読み込む
データ ウェアハウスを読み込む最も一般的なパターンの 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 で外部テーブルを使用する」を参照してください。