データ倉庫にデータを取り込む

適用対象:✅ Microsoft Fabric のウェアハウス

Microsoft Fabric内のウェアハウスには、組み込みのデータ インジェスト ツールが用意されています。 これらのツールを使用して、コードフリーまたはコード豊富なエクスペリエンスを使用して、大規模なデータをウェアハウスに取り込みます。

データ インジェスト ツールを選択する

次の条件に基づいてデータ インジェスト オプションを選択します。

  • コード豊富なデータ インジェスト操作には、COPY (Transact-SQL) ステートメントを使用します。 データ インジェストのスループットが最も高くなります。 Transact-SQL ロジックの一部としてデータ インジェストを追加する必要がある場合に使用します。
    • 開始するには、 COPY ステートメントを使用してデータを取り込む方法に関する説明を参照してください。
    • Warehouse では、従来の BULK INSERT ステートメントもサポートされています。これは、従来の読み込みオプションを持つ COPY INTO のシノニムです。
    • Warehouse の COPY ステートメントでは、Azure ストレージ アカウントと OneLake lakehouse フォルダーからのデータ ソースがサポートされています。
  • 繰り返し、スケジュールに従って実行される、または大量のデータを含む、コード不要または低コードの堅牢なデータ インジェスト ワークフローに パイプライン を使用します。
    • 開始するには、「パイプラインを 使用してウェアハウスにデータを取り込む」を参照してください。
    • パイプラインを使用すると、完全な抽出、変換、読み込み (ETL) エクスペリエンスの堅牢なワークフローを調整できます。 このエクスペリエンスには、移行先環境の準備、カスタム Transact-SQL ステートメントの実行、参照の実行、ソースからコピー先へのデータのコピーに役立つアクティビティが含まれます。
  • データフローは、インジェスト前にソース データに対するカスタム変換を可能にする、コード不要のエクスペリエンスに使用します。
  • コードが豊富なエクスペリエンスに T-SQL インジェスト を使用して、新しいテーブルを作成したり、同じワークスペースまたは外部ストレージ内のソース データを使用して既存のテーブルを更新したりします。
    • 開始するには、 Transact-SQL を使用してウェアハウスにデータを取り込む方法に関する説明を参照してください。
    • INSERT...SELECTSELECT INTOCREATE TABLE AS SELECT (CTAS) などの Transact-SQL 機能を使用して、同じワークスペース内の他のウェアハウス、レイクハウス、ミラー化されたデータベースを参照するテーブルからデータを読み取ります。 これらの機能を使用して、外部Azureストレージ アカウント内のファイルを参照する OPENROWSET 関数からデータを読み取ることもできます。
    • Fabric ワークスペース内の異なるウェアハウス間でクロスデータベースクエリを書き込むこともできます。

サポートされるデータ形式とソース

Microsoft Fabricでの Warehouse のデータ インジェストでは、多くのデータ形式とソースがサポートされています。 この記事で説明する各オプションには、サポートされているデータ コネクタの種類とデータ形式の独自の一覧が含まれています。

T-SQL インジェストの場合、テーブル データ ソースは同じMicrosoft Fabric ワークスペース内にあり、ファイル データ ソースは Azure Data Lake または Azure Blob Storage 内にある必要があります。 ソース データの 3 部構成の名前付けまたは OPENROWSET 関数を使用して、データのクエリを実行できます。 テーブル データ ソースは Delta Lake データ セットを参照できますが、OPENROWSET では、Azure Data Lakeまたは Azure Blob Storage 内の Parquet、CSV、または JSONL ファイルを参照できます。

たとえば、ワークスペースに InventorySales という名前の 2 つのウェアハウスがあるとします。 次のようなクエリでは、 Inventory ウェアハウスに新しいテーブルが作成され、 Inventory ウェアハウス内のテーブルの内容が、 Sales ウェアハウス内のテーブルと結合され、外部ファイルに顧客情報が含まれます。

CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT 
    s.SalesOrders,
    i.ProductName,
    c.CustomerName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
    ON s.ProductID = i.ProductID
JOIN OPENROWSET( BULK 'abfss://<container>@<storage>.dfs.core.windows.net/<customer-file>.csv' ) AS c
    ON s.CustomerID = c.CustomerID
WHERE s.Region = 'West region';

Note

OPENROWSETを使用したデータの読み取りは、テーブルからデータを照会するよりも遅くなる可能性があります。 同じ外部データに繰り返しアクセスする場合は、専用テーブルに取り込んでパフォーマンスとクエリの効率を向上することを検討してください。

COPY (Transact-SQL) ステートメントは現在、CSV、JSONL、PARQUET の各ファイル形式をサポートしています。 データ ソースについては、現在、Azure Data Lake Storage (ADLS) Gen2 と Azure Blob Storage がサポートされています。

パイプラインデータフローでは、 さまざまなデータ ソースとデータ形式がサポートされています。 詳細については、「パイプラインとデータフローを参照してください。

ベスト プラクティス

Microsoft Fabric の Warehouse の COPY コマンドは、SQL ワークロードの高スループットデータ インジェストのためのシンプルで柔軟で高速なインターフェイスを提供します。 現在のバージョンでは、外部ストレージ アカウントからのデータの読み込みのみがサポートされています。

T-SQL 言語を使用して新しいテーブルを作成し、そのテーブルに挿入してから、データ行を更新および削除することもできます。 データベース間クエリを使用して、Microsoft Fabric ワークスペース内の任意のデータベースからデータを挿入できます。 レイクハウスからウェアハウスにデータを取り込む場合は、クロス データベース クエリを使用してこれを行えます。 例えば次が挙げられます。

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • シングルトン INSERT ステートメントを使用してデータを取り込むのを避けます。この方法では、クエリと更新のパフォーマンスが低下するためです。 データ インジェストにシングルトン 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

データをウェアハウスに取り込む方法に関係なく、データ インジェスト タスクは、V オーダー書き込み最適化を使用して生成される Parquet ファイルを最適化します。 V オーダーは、Parquet ファイルを最適化し、Power BI、SQL、Spark などの Microsoft Fabric コンピューティング エンジンでの高速読み取りを可能にします。 一般に、ウェアハウス クエリは、この最適化を使用してクエリの読み取り時間を短縮すると同時に、Parquet ファイルがオープンソース仕様に準拠% 100 であることを保証します。 読み取りパフォーマンスに影響する可能性があるため、V オーダーを無効にしないでください。 V オーダーの詳細については、「ウェアハウスの V オーダーの管理と管理」を参照してください。

Fabric Data Warehouseのデータ インジェストについてよく寄せられる質問

圧縮されている CSV ファイルを読み込む COPY コマンドに関するファイルの分割ガイダンスについて教えてください。

特にファイルの数が少ない場合は、大きな CSV ファイルを分割することを検討してください。ただし、パフォーマンスを向上させるために、ファイルはそれぞれ 4 MB 以上にしてください。

Parquet ファイルを読み込む COPY コマンドに関するファイルの分割ガイダンスについて教えてください。

特にファイルの数が少ない場合は、大きな Parquet ファイルを分割することを検討してください。

ファイルの数やサイズに制限はありますか?

ファイルの数やサイズに制限はありません。 ただし、パフォーマンスを最大限に高めるには、4 MB 以上のファイルを使用してください。

資格情報を指定しない場合、COPY コマンドはどのような認証方法を使用しますか?

既定では、COPY INTO は実行中のユーザーのMicrosoft Entra IDを使用します。