ウェアハウスにデータを取り込む
適用対象:✅ Microsoft Fabric のウェアハウス
Microsoft Fabric のウェアハウスには組み込みデータ インジェスト ツールが用意されており、ユーザーはこれを利用して、コードフリーまたはコードリッチのエクスペリエンスで大規模にデータをウェアハウスに取り込むことができます。
データ インジェスト オプション
次のいずれかのオプションを使用して、ウェアハウスにデータを取り込むことができます。
- COPY (Transact-SQL): COPY ステートメントで、外部の Azure ストレージ アカウントからの柔軟で高スループットのデータ インジェストを行えます。 Transact-SQL コードで、COPY ステートメントを既存の ETL/ELT ロジックの一部として使用できます。
- データ パイプライン: パイプラインで、データ インジェスト用のコードフリーまたはローコードのエクスペリエンスを実現できます。 パイプラインを使用すると、完全な抽出、変換、読み込み (ETL) エクスペリエンスのための堅牢なワークフローを調整することが可能で、これには、コピー先環境の準備、カスタム Transact-SQL ステートメントの実行、参照の実行、ソースからコピー先へのデータのコピーで役立つアクティビティが含まれます。
- データフロー: パイプラインの代わりにデータフローを使用して、データ準備、クリーニング、変換をコードフリーのエクスペリエンスで簡単に行えます。
- クロスウェアハウス インジェスト: ワークスペース ソースからのデータ インジェストも可能です。 このシナリオは、別のテーブルのサブセットを含む新しいテーブルを作成する必要がある場合や、ウェアハウスとレイクハウスで異なるテーブルを結合した結果として必要になる場合があります。 クロスウェアハウス インジェストの場合、前述のオプションに加えて、INSERT...SELECT、SELECT INTO、CREATE TABLE AS SELECT (CTAS) などの Transact-SQL 機能が、同じワークスペースのクロスウェアハウスで機能します。
使用するデータ インジェスト ツールを決定する
使用するデータ インジェスト オプションを決定する際には、以下の基準を使用できます。
- コードリッチなデータ インジェスト操作の場合、可能な限り最高のデータ インジェスト スループットを実現する場合、Transact-SQL ロジックの一部としてデータ インジェストを追加する必要がある場合に、COPY (Transact-SQL) ステートメントを使用します。 構文については、「COPY INTO (Transact-SQL)」を参照してください。
- スケジュールに従い繰り返し実行される、または大量のデータを含むコードフリーまたはローコードの堅牢なデータ インジェスト ワークフローで、データ パイプラインを使用します。 詳細については、「データ パイプラインを使用してデータを取り込む」を参照してください。
- 取り込まれる前のソース データに対するカスタムの変換が可能なコードフリー エクスペリエンスで、データフローを使用します。 これらの変換には、データ型の変更、列の追加または削除、関数を使用した計算列の生成が含まれます (ただし、これらに限定されません)。 詳細については、「データフロー」を参照してください。
- 同じワークスペース内にソース データを含む新しいテーブルを作成するコードリッチ エクスペリエンスで、クロスウェアハウス インジェストを使用します。 詳細については、「Transact-SQL を使用してデータを取り込む」および「クロスデータベース クエリを記述する」を参照してください。
Note
Warehouse の COPY ステートメントでは、Azure ストレージ アカウント上のデータ ソースのみがサポートされています。OneLake ソースは現在サポートされていません。
サポートされるデータ形式とソース
Microsoft Fabric のウェアハウスのデータ インジェストでは、膨大な数のデータ形式、ソースを利用できます。 説明されている各オプションには、サポートされているデータ コネクタの種類とデータ形式の独自の一覧が含まれています。
クロスウェアハウス インジェストの場合、データ ソースは同じ Microsoft Fabric ワークスペース内にある必要があります。 クエリは、ソース データの 3 つの要素からなる名前を使用して実行できます。
たとえば、ワークスペースに Inventory と Sales という名前の 2 つのウェアハウスがあるとします。 次のようなクエリは、Inventory ウェアハウス内のテーブルの内容を含む新しいテーブルを Inventory ウェアハウスに作成し、Sales ウェアハウスのテーブルと結合します。
CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT s.SalesOrders, i.ProductName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
WHERE s.ProductID = i.ProductID
AND s.Region = 'West region'
現在、COPY (Transact-SQL) ステートメントで PARQUET および CSV ファイル形式がサポートされています。 データ ソースについては、現在、Azure Data Lake Storage (ADLS) Gen2 と Azure Blob Storage がサポートされています。
データ パイプラインとデータフローでは、さまざまなデータ ソースとデータ形式がサポートされています。 詳細については、「データ パイプライン」および「データフロー」を参照してください。
ベスト プラクティス
Microsoft Fabric のウェアハウスの COPY コマンド機能では、SQL ワークロードの高スループットデータ インジェストのために、シンプル、柔軟、高速なインターフェイスが使用されます。 現在のバージョンでは、外部ストレージ アカウントからのデータの読み込みのみがサポートされています。
TSQL を使用して新しいテーブルを作成して、それに挿入してから、データ行を更新および削除することもできます。 データは、データベース間クエリを使用して、Microsoft Fabric ワークスペース内の任意のデータベースから挿入できます。 レイクハウスからウェアハウスにデータを取り込む場合は、クロス データベース クエリを使用してこれを行えます。 次に例を示します。
INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
- クエリと更新のパフォーマンスが低下するため、シングルトン INSERT ステートメントを使用してデータを取り込むのは避けてください。 データ インジェストに singleton INSERT ステートメントを連続して使用した場合は、CREATE TABLE AS SELECT (CTAS) または INSERT...SELECT パターンを使用して新しいテーブルを作成し、元のテーブルを削除した後に、CREATE TABLE AS SELECT (CTAS) を使用して作成したテーブルからテーブルを再度作成することをお勧めします。
- 既存のテーブルを削除すると、セマンティック モデルに対して行ったカスタム メジャーやカスタマイズなど、セマンティック モデルが影響を受けます。
- ファイル上の外部データを操作する場合、ファイルのサイズが 4 MB 以上であることが推奨されます。
- 大きな圧縮 CSV ファイルの場合は、ファイルを複数のファイルに分割することを検討してください。
- Azure Data Lake Storage (ADLS) Gen2 では、Azure Blob Storage (レガシ) よりも優れたパフォーマンスが提供されます。 可能な限り、ADLS Gen2 アカウントの使用を検討してください。
- 頻繁に実行されるパイプラインについては、同じファイルに同時にアクセスできる他のサービスから Azure ストレージ アカウントを分離することを検討してください。
- 明示的なトランザクションを使用して、複数のデータ変更をグループ化して、トランザクションが完全にコミットされたときに 1 つ以上のテーブルを読み取るときにのみ表示されるようにすることができます。 また、いずれかの変更が失敗した場合にトランザクションをロールバックすることもできます。
- SELECT がトランザクション内にあり、その前にデータの挿入があった場合、ロールバック後に自動生成された統計が不正確になる可能性があります。 統計が不正確な場合、最適化されていないクエリ プランと実行時間につながる可能性があります。 大きな INSERT の後に SELECT を使用するトランザクションをロールバックする場合は、SELECT に記載されている列の統計を更新します。
Note
データをウェアハウスに取り込む方法に関係なく、データ インジェスト タスクによって生成される Parquet ファイルは、V オーダーの書き込み最適化により最適化されます。 V オーダーは、Parquet ファイルを最適化し、Power BI、SQL、Spark などの Microsoft Fabric コンピューティング エンジンでの高速読み取りを可能にします。 一般に、ウェアハウス クエリは、この最適化によりクエリの読み取り時間が短縮され、Parquet ファイルがオープンソース仕様に 100% 準拠していることを保証します。 Fabric Data Engineering とは異なり、V オーダーは Fabric Data Warehouse のグローバル設定であり、無効にすることはできません。 V オーダーの詳細については、「ウェアハウスの V オーダーの管理と管理」を参照してください。