次の方法で共有


Copy アクティビティで Snowflake を構成する

この記事では、データ パイプラインでのコピー アクティビティを使用して、Snowflake 間でデータをコピーする方法について説明します。

サポートされている構成

Copy アクティビティの下の各タブの構成については、それぞれ次のセクションを参照してください。

全般

[全般設定] タブを構成するには、全般設定のガイダンスを参照してください。

ソース

コピー アクティビティの [ソース] タブの Snowflake では、次のプロパティがサポートされています。

[ソース] タブとプロパティのリストを示すスクリーンショット。

次のプロパティは必須です。

  • [データ ストアの種類]: [外部] を選択します。
  • [接続]: 接続リストから [Snowflake] 接続を選択します。 接続が存在しない場合は、[新規] を選択して新しい Snowflake 接続を作成します。
  • データベース: 接続後に使用する既定のデータベース。 指定したロールが特権を持っている既存のデータベースである必要があります。
  • [クエリの使用]: 使用クエリとして [テーブル] または [クエリ] を選択できます。 次の一覧で、各設定の構成について説明します。
    • テーブル: ドロップダウン リストからデータベースのテーブルを選択します。 または、[編集] をチェックして、テーブル名を手動で入力します。
    • クエリ: Snowflake からデータを読み取る SQL クエリを指定します。 スキーマ、テーブル、および列の名前に小文字が含まれている場合は、クエリでオブジェクト識別子を引用符で囲みます (例: select * from "schema"."myTable")。

[詳細設定] では、次のフィールドを指定できます。

  • ストレージ統合: Snowflake で作成したストレージ統合の名前を指定します。 ストレージ統合を使用するための前提となる手順については、「Snowflake ストレージ統合の構成」を参照してください。

  • 追加の Snowflake コピー オプション: データを読み込むために、Snowflake COPY ステートメントで使用される追加の Snowflake コピー オプションを指定します。 追加のコピー オプションは、キーと値のペアのディクショナリとして指定されます。 例 :MAX_FILE_SIZE、OVERWRITE。 詳細については、「Snowflake コピー オプション」を参照してください。

    ソースに対する追加の Snowflake コピー オプションを示すスクリーンショット。

  • 追加の Snowflake 形式オプション: データを読み込むために、Snowflake COPY ステートメントで使用される追加の Snowflake 形式オプションを指定します。 キーと値のペアのディクショナリとして COPY コマンドに指定される、追加のファイル形式オプション。 例 :DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 詳細については、「Snowflake 形式の種類のオプション」を参照してください。

    ソースに対する追加の Snowflake 形式オプションを示すスクリーンショット。

Snowflake から直接コピーする

コピー先データ ストアと形式がこのセクションで説明する基準を満たす場合は、Copy アクティビティを使用して、Snowflake からコピー先に直接コピーできます。 設定が確認され、次の条件が満たされない場合は、コピー アクティビティの実行が失敗します。

  • ソースにストレージ統合を指定する場合、宛先のデータ ストアは Snowflake の外部ステージで参照したAzure Blob Storage です。 データをコピーする前に、次の手順を完了する必要があります。

    1. サポートされている認証の種類を使用して、宛先の Azure Blob Storage 用の Azure Blob Storage 接続を作成します。

    2. 宛先の Azure Blob Storage のAccess Control (IAM) で Snowflake サービス プリンシパルに対し、ストレージ BLOB データ共同作成者以上のロールを付与します。

  • ソースにストレージ統合を指定しない場合:

    コピー先への接続が、Shared Access Signature 認証を使用する Azure Blob Storage です。 サポートされている次の形式で Azure Data Lake Storage Gen2 にデータを直接コピーする場合、Azure Data Lake Storage Gen2 アカウントに対する SAS 認証を使用して Azure Blob Storage 接続を作成すると、Snowflake からのステージング コピーを使用しないようにすることができます。

  • コピー先データ形式が、次のように構成された ParquetDelimitedText、または JSON です。

    • Parquet 形式の場合は、圧縮コーデックが NoneSnappy、または Lzo です。
    • DelimitedText 形式の場合:
      • 行区切り記号は、\r\n、または任意の 1 文字です。
      • 圧縮の種類は、Nonegzipbzip2、または deflate にできます。
      • エンコードは既定値のままか、UTF-8 に設定します。
      • 引用符文字は、Double quoteSingle quote、または No quote character (引用符なし) です。
    • JSON 形式の場合、直接コピーでは、ソースの Snowflake テーブルまたはクエリ結果に 1 つの列しかなく、この列のデータ型が VARIANTOBJECT、または ARRAY であるケースのみがサポートされます。
      • 圧縮の種類は、Nonegzipbzip2、または deflate にできます。
      • エンコードは既定値のままか、UTF-8 に設定します。
      • コピー アクティビティのコピー先のファイル パターンは、既定値のままにするか、オブジェクトのセットに設定します。
  • コピー アクティビティ ソースでは、追加の列は指定しません。

  • 列マッピングが指定されていません。

Snowflake からのステージング コピー

前のセクションで説明したように、宛先のデータ ストアまたは形式が Snowflake COPY コマンドとネイティブに互換性がない場合は、中間の Azure Blob Storage インスタンスを使用して組み込みのステージング コピーを有効にします。 ステージング コピー機能はスループットも優れています。 Snowflake のデータをステージング ストレージにエクスポートしてから、データを宛先にコピーし、最後にステージング ストレージの一時データをクリーンアップします。

この機能を使うには、中間ステージとして、Azure ストレージ アカウントを参照する Azure Blob Storage 接続を作成します。 次に、[設定] タブに移動してステージング設定を構成します。 Azure Blob Storage ステージング接続を構成するには、[外部] を選択する必要があります。

  • ソースにストレージ統合を指定する場合、中間ステージングの Azure Blob Storage は、Snowflake の外部ステージで参照したものであることが必要です。 それに対し、サポートされている認証を使用して Azure Blob Storage リンク サービスを作成し、ステージングの Azure Blob Storage のAccess Control (IAM) で Snowflake サービス プリンシパルに対し、ストレージ BLOB データ共同作成者以上のロールを付与する必要があります。 [設定] タブにある [ステージング設定][ストレージ パス] が必要です。

  • ソースにストレージ統合を指定しない場合、ステージングの Azure Blob Storage 接続では、Snowflake COPY コマンドで必要な、Shared Access Signature 認証を使用する必要があります。 ステージングの Azure Blob Storage で Snowflake に適切なアクセス許可を付与していることを確認します。 この詳細については、こちらの記事を参照してください。

宛先

コピー アクティビティの [コピー先] タブの Snowflake では、次のプロパティがサポートされています。

[コピー先] タブを示すスクリーンショット。

次のプロパティは必須です。

  • [データ ストアの種類]: [外部] を選択します。
  • [接続]: 接続リストから [Snowflake] 接続を選択します。 接続が存在しない場合は、[新規] を選択して新しい Snowflake 接続を作成します。
  • データベース: 接続後に使用する既定のデータベース。 指定したロールが特権を持っている既存のデータベースである必要があります。
  • [テーブル]: ドロップダウン リストからデータベースのテーブルを選択します。 または、[編集] をチェックして、テーブル名を手動で入力します。

[詳細設定] では、次のフィールドを指定できます。

  • コピー前スクリプト: 各実行でコピー先テーブルにデータを書き込む前に実行するコピー アクティビティのスクリプトを指定します。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。

  • ストレージ統合: Snowflake で作成したストレージ統合の名前を指定します。 ストレージ統合を使用するための前提となる手順については、「Snowflake ストレージ統合の構成」を参照してください。

  • 追加の Snowflake コピー オプション: データを読み込むために、Snowflake COPY ステートメントで使用される追加の Snowflake コピー オプションを指定します。 追加のコピー オプションは、キーと値のペアのディクショナリとして指定されます。 例 :ON_ERROR、FORCE、LOAD_UNCERTAIN_FILES。 詳細については、「Snowflake コピー オプション」を参照してください。

    コピー先に対する追加の Snowflake コピー オプションを示すスクリーンショット。

  • 追加の Snowflake 形式オプション: データを読み込むために、Snowflake COPY ステートメントで使用される追加の Snowflake 形式オプションを指定します。 キーと値のペアのディクショナリとして COPY コマンドに指定される、追加のファイル形式オプション。 例 :DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 詳細については、「Snowflake 形式の種類のオプション」を参照してください。

    コピー先に対する追加の Snowflake 形式オプションを示すスクリーンショット。

Snowflake に直接コピーする

ソースのデータ ストアと形式がこのセクションで説明する基準を満たす場合は、コピー アクティビティを使用して、ソースから Snowflake に直接コピーできます。 設定が確認され、次の条件が満たされない場合は、コピー アクティビティの実行が失敗します。

  • 宛先に ストレージ統合を指定する場合:

    ソース データ ストアは、Snowflake の外部ステージで参照した Azure Blob Storage です。 データをコピーする前に、次の手順を完了する必要があります。

    1. サポートされている認証の種類を使用して、ソースの Azure Blob Storage 用の Azure Blob Storage 接続を作成します。

    2. ソースの Azure Blob Storage のAccess Control (IAM) で Snowflake サービス プリンシパルに対し、ストレージ BLOB データ閲覧者以上のロールを付与します。

  • 宛先に ストレージ統合を指定しない場合:

    ソース接続が、Shared Access Signature 認証を使用する Azure Blob Storage です。 サポートされている次の形式で Azure Data Lake Storage Gen2 からデータを直接コピーする場合、Azure Data Lake Storage Gen2 アカウントに対する SAS 認証を使用して Azure Blob Storage 接続を作成すると、Snowflake へのステージング コピーを使用しないようにすることができます。

  • ソース データ形式が、次のように構成された ParquetDelimitedText、または JSON です。

    • Parquet 形式の場合は、圧縮コーデックが None またはSnappyです。

    • DelimitedText 形式の場合:

      • 行区切り記号は、\r\n、または任意の 1 文字です。 行区切り記号が "\r\n" でない場合、[先頭の行を見出しとして使用] は選択されず、[スキップ行数] は指定されません。
      • 圧縮の種類は、Nonegzipbzip2、または deflate にできます。
      • エンコードが既定値のままになっているか、"UTF-8"、"UTF-16"、"UTF-16BE"、"UTF-32"、"UTF-32BE"、"BIG5"、"EUC-JP"、"EUC-KR"、"GB18030"、"ISO-2022-JP"、"ISO-2022-KR"、"ISO-8859-1"、"ISO-8859-2"、"ISO-8859-5"、"ISO-8859-6"、"ISO-8859-7"、"ISO-8859-8"、"ISO-8859-9"、"WINDOWS-1250"、"WINDOWS-1251"、"WINDOWS-1252"、"WINDOWS-1253"、"WINDOWS-1254"、"WINDOWS-1255" に設定されています。
      • 引用符文字は、Double quoteSingle quote、または No quote character (引用符なし) です。
    • JSON 形式の場合、直接コピーでは、コピー先の Snowflake テーブルに 1 つの列しかなく、この列のデータ型が VARIANTOBJECT、または ARRAY であるケースのみがサポートされます。

      • 圧縮の種類は、Nonegzipbzip2、または deflate にできます。
      • エンコードは既定値のままか、UTF-8 に設定します。
      • 列マッピングが指定されていません。
  • コピー アクティビティ ソース内:

    • 追加の列は指定されません。
    • ソースがフォルダーの場合は、Recursively が選択されます。
    • [最終変更でフィルター] および [パーティション検出を有効にする] では、プレフィックス開始時間 (UTC)、および終了時間 (UTC) は指定されません。

Snowflake へのステージング コピー

前のセクションで説明したように、ソースのデータ ストアまたは形式が Snowflake COPY コマンドとネイティブに互換性がない場合は、中間の Azure Blob Storage インスタンスを使用して組み込みのステージング コピーを有効にします。 ステージング コピー機能はスループットも優れています。 Snowflake のデータ形式要件を満たすようにデータを自動的に変換します。 次に、COPY コマンドを呼び出して、Snowflake にデータを読み込みます。 最後に、BLOB ストレージから一時データをクリーンアップします。

この機能を使うには、中間ステージとして、Azure ストレージ アカウントを参照する Azure Blob Storage 接続を作成します。 次に、[設定] タブに移動してステージング設定を構成します。 Azure Blob Storage ステージング接続を構成するには、[外部] を選択する必要があります。

  • 宛先にストレージ統合を指定する場合、中間ステージングの Azure Blob Storage は、Snowflake の外部ステージで参照したものであることが必要です。 それに対し、サポートされている認証を使用して Azure Blob Storage 接続を作成し、ステージングの Azure Blob Storage のAccess Control (IAM) で Snowflake サービス プリンシパルに対し、ストレージ BLOB データ閲覧者以上のロールを付与する必要があります。 [設定] タブにある [ステージング設定][ストレージ パス] が必要です。

  • 宛先にストレージ統合を指定しない場合、ステージングの Azure Blob Storage 接続では、Snowflake COPY コマンドで必要な、Shared Access Signature 認証を使用する必要があります。

マッピング

[マッピング] タブの構成については、「[マッピング] タブでマッピングを構成する」を参照してください。

設定

[設定] タブの構成については、「[設定] タブで他の設定を構成する」を参照してください。

テーブルの概要

次の表に、Snowflake でのコピー アクティビティの詳細を示します。

ソース

名前 Description Value 必須 JSON スクリプト プロパティ
データ ストアの種類 データ ストアの種類。 外部品目番号 はい /
接続 ソース データ ストアへの実際の接続。 <実際の接続> はい つながり
データベース ソースとして使用するデータベース。 < データベース > はい database
クエリの使用 Snowflake からデータを読み取る方法。 • テーブル
• クエリ
いいえ • テーブル
• クエリ
テーブル データを読み取るテーブルの名前。 < ソース テーブルの名前> はい schema
table
クエリ Snowflake からデータを読み取る SQL クエリ。 < ソース クエリの名前> はい クエリ
ストレージ統合 Snowflake で作成したストレージ統合の名前を指定します。 ストレージ統合を使用するための前提となる手順については、「Snowflake ストレージ統合の構成」を参照してください。 < ストレージ統合 > いいえ storageIntegration
追加の Snowflake コピー オプション 追加のコピー オプション。キーと値のペアのディクショナリとして指定されます。 例 :MAX_FILE_SIZE、OVERWRITE。 詳細については、「Snowflake コピー オプション」を参照してください。 • 名前
• 値
いいえ additionalCopyOptions
追加の Snowflake 形式のオプション キーと値のペアのディクショナリとして COPY コマンドに指定される、追加のファイル形式オプション。 例 :DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 詳細については、「Snowflake 形式の種類のオプション」を参照してください。 • 名前
• 値
いいえ additionalFormatOptions

宛先

Note

ソースでは Azure Snowflake 以外のインスタンスがサポートされていますが、現在、Snowflake 変換先 (Azure Data Factory のシンクとも呼ばれます) では、Azure Snowflake インスタンスのみがサポートされています。

名前 Description Value 必須 JSON スクリプト プロパティ
データ ストアの種類 データ ストアの種類。 外部品目番号 はい /
接続 コピー先データ ストアへの接続。 <実際の接続> はい つながり
データベース コピー先として使用するデータベース。 < データベース> はい /
テーブル コピー先のデータ テーブル。 < コピー先テーブルの名前> はい • スキーマ
• テーブル
コピー前スクリプト Copy アクティビティの毎回の実行で、データを Snowflake に書き込む前に実行する SQL クエリ。 前に読み込まれたデータをクリーンアップするには、このプロパティを使います。 < コピー前スクリプト> 使用不可 preCopyScript
ストレージ統合 Snowflake で作成したストレージ統合の名前を指定します。 ストレージ統合を使用するための前提となる手順については、「Snowflake ストレージ統合の構成」を参照してください。 < ストレージ統合 > いいえ storageIntegration
追加の Snowflake コピー オプション 追加のコピー オプション。キーと値のペアのディクショナリとして指定されます。 例 :ON_ERROR、FORCE、LOAD_UNCERTAIN_FILES。 詳細については、「Snowflake コピー オプション」を参照してください。 • 名前
• 値
いいえ additionalCopyOptions
追加の Snowflake 形式のオプション キーと値のペアのディクショナリとして COPY コマンドに指定される、追加のファイル形式オプション。 例 :DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 詳細については、「Snowflake 形式の種類のオプション」を参照してください。 • 名前
• 値
いいえ additionalFormatOptions