次の方法で共有


COPY ステートメントを使用してウェアハウスにデータを取り込む

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

COPY ステートメントは、ウェアハウス テーブルにデータを取り込む主な方法です。 COPY は、外部の Azure ストレージ アカウントから高スループットのデータ インジェストを実行し、ソース ファイル形式のオプション、拒否された行を格納する場所、ヘッダー行のスキップなどのオプションを柔軟に構成できます。

このチュートリアルでは、T-SQL COPY ステートメントを使用したウェアハウス テーブルのデータ インジェストの例を示します。 Azure Open Datasets から Bing COVID-19 サンプル データを使用します。 スキーマと使用権限など、このデータの詳細については、「Bing COVID-19」を参照してください。

Note

その他の例や完全な構文を含む T-SQL COPY ステートメントの詳細については、「COPY (Transact-SQL)」を参照してください。

テーブルの作成

COPY ステートメントを使用する前に、コピー先テーブルを作成する必要があります。 このサンプルのコピー先テーブルを作成するには、次の手順に従います。

  1. Microsoft Fabric ワークスペースで、ウェアハウスを見つけて開きます。

  2. [ホーム] タブに切り替えて、[新しい SQL クエリ] を選択します。

    [新しい SQL クエリ] ボタンのある、ユーザーのワークスペースの上段セクションのスクリーンショット。

  3. このチュートリアルのコピー先として使用するテーブルを作成するには、次のコードを実行します。

    CREATE TABLE [dbo].[bing_covid-19_data]
    (
        [id] [int] NULL,
        [updated] [date] NULL,
        [confirmed] [int] NULL,
        [confirmed_change] [int] NULL,
        [deaths] [int] NULL,
        [deaths_change] [int] NULL,
        [recovered] [int] NULL,
        [recovered_change] [int] NULL,
        [latitude] [float] NULL,
        [longitude] [float] NULL,
        [iso2] [varchar](8000) NULL,
        [iso3] [varchar](8000) NULL,
        [country_region] [varchar](8000) NULL,
        [admin_region_1] [varchar](8000) NULL,
        [iso_subdivision] [varchar](8000) NULL,
        [admin_region_2] [varchar](8000) NULL,
        [load_time] [datetime2](6) NULL
    );
    

COPY ステートメントを使用して Parquet データを取り込む

最初の例では、Parquet ソースを使用してデータを読み込みます。 このデータは一般公開されており、認証を必要としないため、コピー元とコピー先を指定することで、このデータを簡単にコピーできます。 認証の詳細は必要ありません。 FILE_TYPE 引数を指定するだけで済みます。

Parquet ソースで COPY ステートメントを実行するには、次のコードを使用します。

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet'
WITH (
    FILE_TYPE = 'PARQUET'
);

COPY ステートメントを使用して CSV データを取り込み、ヘッダー行をスキップする

コンマ区切り値 (CSV) ファイルには、テーブルを表す列名を CSV ファイル内で示すヘッダー行が含まれているのが一般的です。 COPY ステートメントでは、CSV ファイルからデータをコピーし、ソース ファイル ヘッダーから 1 つ以上の行をスキップできます。

前の例を実行して Parquet からデータを読み込んだ場合は、テーブルからすべてのデータを削除することを検討してください。

DELETE FROM [dbo].[bing_covid-19_data];

ヘッダー行をスキップして CSV ファイルからデータを読み込むには、次のコードを使用します。

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
    FILE_TYPE = 'CSV', 
    FIRSTROW = 2
);

結果を確認する

COPY ステートメントは、新しいテーブルに 4,766,736 行を取り込んで完了します。 操作が正常に実行されたことを確認するには、テーブル内の行の合計数を返すクエリを実行します。

SELECT COUNT(*) FROM [dbo].[bing_covid-19_data];

実行の間に行を削除せずに両方の例を実行した場合、このクエリの結果は 2 倍の行数で表示されます。 この場合はデータ インジェストで機能しますが、このデータをさらに試す場合は、すべての行を削除し、データを 1 回だけ取り込む方法を検討してください。