Snowflake の転送スケジュールを設定する

BigQuery Data Transfer Service が提供する Snowflake コネクタを使用すると、パブリック IP 許可リストを使用して Snowflake から BigQuery にデータを移行する自動転送ジョブをスケジュールして管理できます。

概要

Snowflake コネクタは、Google Kubernetes Engine の移行エージェントと連携し、Snowflake から Snowflake がホストされている同じクラウド プロバイダ内のステージング領域への読み込みオペレーションをトリガーします。AWS でホストされている Snowflake アカウントの場合、データはまず Amazon S3 バケットにステージングされ、その後 BigQuery Data Transfer Service を使用して BigQuery に転送されます。

次の図は、AWS でホストされている Snowflake データ ウェアハウスから BigQuery にデータが転送される仕組みを示しています。

Snowflake から BigQuery への移行時のデータの流れ。

制限事項

Snowflake コネクタを使用して行うデータ転送には、次の制限があります。

  • データ転送は、AWS でホストされている Snowflake アカウントからのみサポートされます。 Trusted Cloud by S3NS または Microsoft Azure でホストされている Snowflake アカウントからのデータ転送はサポートされていません。
  • Snowflake コネクタは増分データ転送をサポートしていません。
  • Snowflake コネクタは、単一の Snowflake データベースとスキーマ内のテーブルからの転送のみをサポートします。複数の Snowflake データベースまたはスキーマを含むテーブルから転送するには、転送ジョブを個別に設定します。
  • Snowflake から Amazon S3 バケットへのデータ読み込み速度は、この転送用に選択した Snowflake ウェアハウスによって制限されます。
  • データは、BigQuery に読み込まれる前に、Parquet データ形式で Snowflake から抽出されます。

    • 次の Parquet データ型はサポートされていません。
    • 次の Parquet データ型はサポートされていませんが、変換できます。

      • TIMESTAMP_NTZ

      メタデータを生成して変換エンジンを実行するときに、グローバル型変換構成 YAML を使用して、DATETIME 変換のデフォルトの動作を TIMESTAMP にオーバーライドします。

      構成 YAML は次の例のようになります。

      type: experimental_object_rewriter
      global:
        typeConvert:
          datetime: TIMESTAMP
      

始める前に

Snowflake 転送を設定する前に、このセクションに記載されているすべての手順を行う必要があります。必要な手順は次のとおりです。

  1. Trusted Cloud プロジェクトを準備する
  2. 必要な BigQuery のロール
  3. Amazon S3 バケットを準備する
  4. 必要な権限を持つ Snowflake ユーザーを作成する
  5. ネットワーク ポリシーを追加する
  6. メタデータを生成して変換エンジンを実行する
  7. Snowflake でサポートされていないデータ型を評価する
  8. 転送情報を収集する

Trusted Cloud プロジェクトを準備する

次の手順で、Snowflake 転送用の Trusted Cloud プロジェクトを作成して構成します。

  1. Trusted Cloud by S3NS プロジェクトを作成するか、既存のプロジェクトを使用します。

  2. BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。

  3. データを保存する BigQuery データセットを作成します。テーブルを作成する必要はありません。

必要な BigQuery のロール

転送の作成に必要な権限を取得するには、BigQuery 管理者roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

転送を作成するには、次の権限が必要です。

  • 転送構成を作成するユーザー アカウントまたはサービス アカウントに対する bigquery.transfers.update
  • 転送構成を作成するユーザー アカウントまたはサービス アカウントに対する bigquery.datasets.get
  • 転送構成を作成するユーザー アカウントまたはサービス アカウントに対する bigquery.datasets.update

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Amazon S3 バケットを準備する

Snowflake データ転送を完了するには、Amazon S3 バケットを作成し、Snowflake からの書き込みアクセスを許可するように構成する必要があります。

  1. Amazon S3 バケットを作成します。Amazon S3 バケットは、BigQuery に読み込む前にデータをステージングするために使用されます。

  2. Snowflake ストレージ統合オブジェクトを作成して構成し、Snowflake が外部ステージとして Amazon S3 バケットにデータを書き込めるようにします。

Amazon S3 バケットに対する読み取りアクセスを許可するには、次の操作も行う必要があります。

  1. 専用の Amazon IAM ユーザーを作成し、AmazonS3ReadOnlyAccess ポリシーを付与します。

  2. IAM ユーザーの Amazon アクセスキー ペアを作成します。

必要な権限を持つ Snowflake ユーザーを作成する

Snowflake 転送中、Snowflake コネクタは JDBC 接続を使用して Snowflake アカウントに接続します。データ転送の実行に必要な権限のみを持つカスタムロールを使用して、新しい Snowflake ユーザーを作成する必要があります。

  // Create and configure new role, MIGRATION_ROLE
  GRANT USAGE
    ON WAREHOUSE WAREHOUSE_NAME
    TO ROLE MIGRATION_ROLE;

  GRANT USAGE
    ON DATABASE DATABASE_NAME
    TO ROLE MIGRATION_ROLE;

  GRANT USAGE
    ON SCHEMA DATABASE_NAME.SCHEMA_NAME
    TO ROLE MIGRATION_ROLE;

  // You can modify this to give select permissions for all tables in a schema
  GRANT SELECT
    ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
    TO ROLE MIGRATION_ROLE;

  GRANT USAGE
    ON STORAGE_INTEGRATION_OBJECT_NAME
    TO ROLE MIGRATION_ROLE;

次のように置き換えます。

  • MIGRATION_ROLE: 作成するカスタムロールの名前
  • WAREHOUSE_NAME: データ ウェアハウスの名前
  • DATABASE_NAME: Snowflake データベースの名前
  • SCHEMA_NAME: Snowflake スキーマの名前
  • TABLE_NAME: このデータ転送に含まれる Snowflake の名前
  • STORAGE_INTEGRATION_OBJECT_NAME: Snowflake ストレージ統合オブジェクトの名前。

認証用の鍵ペアを生成する

Snowflake による単一要素パスワードでのログインが非推奨になったため、認証には鍵ペアを使用することをおすすめします。

鍵ペアを構成するには、暗号化された RSA 鍵ペアまたは暗号化されていない RSA 鍵ペアを生成し、公開鍵を Snowflake ユーザーに割り当てます。詳細については、鍵ペア認証の構成をご覧ください。

ネットワーク ポリシーを追加する

パブリック接続の場合、Snowflake アカウントでは、デフォルトでデータベース認証情報を使用したパブリック接続が許可されます。ただし、Snowflake コネクタがアカウントに接続できないようにするネットワーク ルールまたはポリシーが構成されている可能性があります。この場合は、必要な IP アドレスを許可リストに追加する必要があります。

次の表は、公開転送に使用されるリージョンとマルチリージョンのロケーションの IP アドレスのリストです。データセットのロケーションに対応する IP アドレスのみを追加することも、表に記載されているすべての IP アドレスを追加することもできます。これらは、BigQuery Data Transfer Service のデータ転送用に Google が予約した IP アドレスです。

許可リストに IP アドレスを追加する手順は次のとおりです。

  1. type = IPV4ネットワーク ルールを作成します。BigQuery Data Transfer Service は、JDBC 接続を使用して Snowflake アカウントに接続します。
  2. 先ほど作成したネットワーク ルールと、次の表の IP アドレスを使用して、ネットワーク ポリシーを作成します。

リージョンのロケーション

リージョンの説明 リージョン名 IP アドレス
南北アメリカ
コロンバス(オハイオ州) us-east5 34.162.72.184
34.162.173.185
34.162.205.205
34.162.81.45
34.162.182.149
34.162.59.92
34.162.157.190
34.162.191.145
ダラス us-south1 34.174.172.89
34.174.40.67
34.174.5.11
34.174.96.109
34.174.148.99
34.174.176.19
34.174.253.135
34.174.129.163
アイオワ us-central1 34.121.70.114
34.71.81.17
34.122.223.84
34.121.145.212
35.232.1.105
35.202.145.227
35.226.82.216
35.225.241.102
ラスベガス us-west4 34.125.53.201
34.125.69.174
34.125.159.85
34.125.152.1
34.125.195.166
34.125.50.249
34.125.68.55
34.125.91.116
ロサンゼルス us-west2 35.236.59.167
34.94.132.139
34.94.207.21
34.94.81.187
34.94.88.122
35.235.101.187
34.94.238.66
34.94.195.77
メキシコ northamerica-south1 34.51.6.35
34.51.7.113
34.51.12.83
34.51.10.94
34.51.11.219
34.51.11.52
34.51.2.114
34.51.15.251
モントリオール northamerica-northeast1 34.95.20.253
35.203.31.219
34.95.22.233
34.95.27.99
35.203.12.23
35.203.39.46
35.203.116.49
35.203.104.223
北バージニア us-east4 35.245.95.250
35.245.126.228
35.236.225.172
35.245.86.140
35.199.31.35
35.199.19.115
35.230.167.48
35.245.128.132
35.245.111.126
35.236.209.21
オレゴン us-west1 35.197.117.207
35.199.178.12
35.197.86.233
34.82.155.140
35.247.28.48
35.247.31.246
35.247.106.13
34.105.85.54
ソルトレイクシティ us-west3 34.106.37.58
34.106.85.113
34.106.28.153
34.106.64.121
34.106.246.131
34.106.56.150
34.106.41.31
34.106.182.92
サンパウロ southamerica-east1 35.199.88.228
34.95.169.140
35.198.53.30
34.95.144.215
35.247.250.120
35.247.255.158
34.95.231.121
35.198.8.157
サンティアゴ southamerica-west1 34.176.188.48
34.176.38.192
34.176.205.134
34.176.102.161
34.176.197.198
34.176.223.236
34.176.47.188
34.176.14.80
サウスカロライナ us-east1 35.196.207.183
35.237.231.98
104.196.102.222
35.231.13.201
34.75.129.215
34.75.127.9
35.229.36.137
35.237.91.139
トロント northamerica-northeast2 34.124.116.108
34.124.116.107
34.124.116.102
34.124.116.80
34.124.116.72
34.124.116.85
34.124.116.20
34.124.116.68
ヨーロッパ
ベルギー europe-west1 35.240.36.149
35.205.171.56
34.76.234.4
35.205.38.234
34.77.237.73
35.195.107.238
35.195.52.87
34.76.102.189
ベルリン europe-west10 34.32.28.80
34.32.31.206
34.32.19.49
34.32.33.71
34.32.15.174
34.32.23.7
34.32.1.208
34.32.8.3
フィンランド europe-north1 35.228.35.94
35.228.183.156
35.228.211.18
35.228.146.84
35.228.103.114
35.228.53.184
35.228.203.85
35.228.183.138
フランクフルト europe-west3 35.246.153.144
35.198.80.78
35.246.181.106
35.246.211.135
34.89.165.108
35.198.68.187
35.242.223.6
34.89.137.180
ロンドン europe-west2 35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
マドリッド europe-southwest1 34.175.99.115
34.175.186.237
34.175.39.130
34.175.135.49
34.175.1.49
34.175.95.94
34.175.102.118
34.175.166.114
ミラノ europe-west8 34.154.183.149
34.154.40.104
34.154.59.51
34.154.86.2
34.154.182.20
34.154.127.144
34.154.201.251
34.154.0.104
オランダ europe-west4 35.204.237.173
35.204.18.163
34.91.86.224
34.90.184.136
34.91.115.67
34.90.218.6
34.91.147.143
34.91.253.1
パリ europe-west9 34.163.76.229
34.163.153.68
34.155.181.30
34.155.85.234
34.155.230.192
34.155.175.220
34.163.68.177
34.163.157.151
ストックホルム europe-north2 34.51.133.48
34.51.136.177
34.51.128.140
34.51.141.252
34.51.139.127
34.51.142.55
34.51.134.218
34.51.138.9
トリノ europe-west12 34.17.15.186
34.17.44.123
34.17.41.160
34.17.47.82
34.17.43.109
34.17.38.236
34.17.34.223
34.17.16.47
ワルシャワ europe-central2 34.118.72.8
34.118.45.245
34.118.69.169
34.116.244.189
34.116.170.150
34.118.97.148
34.116.148.164
34.116.168.127
チューリッヒ europe-west6 34.65.205.160
34.65.121.140
34.65.196.143
34.65.9.133
34.65.156.193
34.65.216.124
34.65.233.83
34.65.168.250
アジア太平洋
デリー asia-south2 34.126.212.96
34.126.212.85
34.126.208.224
34.126.212.94
34.126.208.226
34.126.212.232
34.126.212.93
34.126.212.206
香港 asia-east2 34.92.245.180
35.241.116.105
35.220.240.216
35.220.188.244
34.92.196.78
34.92.165.209
35.220.193.228
34.96.153.178
ジャカルタ asia-southeast2 34.101.79.105
34.101.129.32
34.101.244.197
34.101.100.180
34.101.109.205
34.101.185.189
34.101.179.27
34.101.197.251
メルボルン australia-southeast2 34.126.196.95
34.126.196.106
34.126.196.126
34.126.196.96
34.126.196.112
34.126.196.99
34.126.196.76
34.126.196.68
ムンバイ asia-south1 34.93.67.112
35.244.0.1
35.200.245.13
35.200.203.161
34.93.209.130
34.93.120.224
35.244.10.12
35.200.186.100
大阪 asia-northeast2 34.97.94.51
34.97.118.176
34.97.63.76
34.97.159.156
34.97.113.218
34.97.4.108
34.97.119.140
34.97.30.191
ソウル asia-northeast3 34.64.152.215
34.64.140.241
34.64.133.199
34.64.174.192
34.64.145.219
34.64.136.56
34.64.247.158
34.64.135.220
シンガポール asia-southeast1 34.87.12.235
34.87.63.5
34.87.91.51
35.198.197.191
35.240.253.175
35.247.165.193
35.247.181.82
35.247.189.103
シドニー australia-southeast1 35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219
台湾 asia-east1 35.221.201.20
35.194.177.253
34.80.17.79
34.80.178.20
34.80.174.198
35.201.132.11
35.201.223.177
35.229.251.28
35.185.155.147
35.194.232.172
東京 asia-northeast1 34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192
中東
ダンマーム me-central2 34.166.20.177
34.166.10.104
34.166.21.128
34.166.19.184
34.166.20.83
34.166.18.138
34.166.18.48
34.166.23.171
ドーハ me-central1 34.18.48.121
34.18.25.208
34.18.38.183
34.18.33.25
34.18.21.203
34.18.21.80
34.18.36.126
34.18.23.252
テルアビブ me-west1 34.165.184.115
34.165.110.74
34.165.174.16
34.165.28.235
34.165.170.172
34.165.187.98
34.165.85.64
34.165.245.97
アフリカ
ヨハネスブルグ africa-south1 34.35.11.24
34.35.10.66
34.35.8.32
34.35.3.248
34.35.2.113
34.35.5.61
34.35.7.53
34.35.3.17

マルチリージョンのロケーション

マルチリージョンの説明 マルチリージョン名 IP アドレス
欧州連合の加盟国内のデータセンター1 EU 34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
米国内のデータセンター US 35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120

1 EU マルチリージョン内のデータは europe-west2(ロンドン)や europe-west6(チューリッヒ)のデータセンターには保存されません。

メタデータを生成して変換エンジンを実行する

Snowflake 用の BigQuery Data Transfer Service コネクタは、Snowflake テーブルを BigQuery に移行するときに、BigQuery 移行サービス変換エンジンをスキーマ マッピングに使用します。Snowflake データ転送を完了するには、まず変換用のメタデータを生成してから、変換エンジンを実行する必要があります。

  1. Snowflake 用の dwh-migration-tool を実行します。詳細については、変換と評価のためのメタデータを生成するをご覧ください。
  2. 生成された metadata.zip ファイルを Cloud Storage バケットにアップロードします。metadata.zip ファイルは、変換エンジンの入力として使用されます。
  3. target_types フィールドを metadata として指定して、バッチ変換サービスを実行します。詳細については、Translation API を使用して SQL クエリを変換するをご覧ください。

    • Snowflake のバッチ変換を実行するコマンドの例を次に示します。
      curl -d "{
      \"name\": \"sf_2_bq_translation\",
      \"displayName\": \"Snowflake to BigQuery Translation\",
      \"tasks\": {
          string: {
            \"type\": \"Snowflake2BigQuery_Translation\",
            \"translation_details\": {
                \"target_base_uri\": \"gs://sf_test_translation/output\",
                \"source_target_mapping\": {
                  \"source_spec\": {
                      \"base_uri\": \"gs://sf_test_translation/input\"
                  }
                },
                \"target_types\": \"metadata\",
            }
          }
      },
      }" \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
    
    • このコマンドのステータスは、BigQuery の SQL 変換ページで確認できます。バッチ変換ジョブの出力は gs://translation_target_base_uri/metadata/config/ に保存されます。

サービス アカウントに必要な権限

Snowflake 転送では、サービス アカウントを使用して、指定された Cloud Storage パスの変換エンジン出力からデータを読み取ります。サービス アカウントに storage.objects.get 権限と storage.objects.list 権限を付与する必要があります。

転送構成と宛先データセットが作成される Trusted Cloud by S3NS プロジェクトに属しているサービス アカウントを使用することをおすすめします。サービス アカウントが BigQuery データ転送を作成したプロジェクトとは異なる Trusted Cloud by S3NS プロジェクトのサービス アカウントである場合は、プロジェクト間のサービス アカウントの承認を有効にする必要があります。

詳細については、BigQuery の IAM ロールと権限をご覧ください。

Snowflake データを評価する

BigQuery は、Snowflake から Cloud Storage にデータを Parquet ファイルとして書き込みます。Parquet ファイルは、TIMESTAMP_TZTIMESTAMP_LTZ のデータ型をサポートしていません。データにこれらの型が含まれている場合は、CSV ファイルとして Amazon S3 にエクスポートし、CSV ファイルを BigQuery にインポートできます。詳細については、Amazon S3 の転送の概要をご覧ください。

転送情報を収集する

BigQuery Data Transfer Service で移行を設定するために必要な情報を収集します。

Snowflake の転送を設定する

次のオプションのいずれかを選択します。

コンソール

  1. Trusted Cloud コンソールの [データ転送] ページに移動します。

    [データ転送] に移動

  2. [ 転送を作成] をクリックします。

  3. [ソースタイプ] セクションで、[ソース] リストから [Snowflake Migration] を選択します。

  4. [転送構成名] セクションで、[表示名] フィールドに、My migration などの転送の名前を入力します。表示名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。

  5. [転送先の設定] セクションで、[データセット] リストから作成したデータセットを選択します。

  6. [データソースの詳細] セクションで、次のようにします。

    1. [Account identifier] に、Snowflake アカウントの固有識別子(組織名とアカウント名の組み合わせ)を入力します。この ID は、Snowflake アカウント URL の接頭辞であり、完全な URL ではありません。例: ACCOUNT_IDENTIFIER.snowflakecomputing.com
    2. [ユーザー名] に、Snowflake テーブルの転送のためにデータベースへのアクセスに使用される認証情報と認可を持つ Snowflake ユーザーのユーザー名を入力します。この転送用に作成したユーザーを使用することをおすすめします。
    3. [Auth mechanism] で、Snowflake ユーザーの認証方法を選択します。詳細については、認証用の鍵ペアを生成するをご覧ください。
    4. [パスワード] に、Snowflake ユーザーのパスワードを入力します。 [Auth mechanism] フィールドで [PASSWORD] を選択した場合、このフィールドは必須です。
    5. [秘密鍵] に、Snowflake ユーザーの公開鍵に関連付けられている秘密鍵を入力します。[Auth mechanism] フィールドで [KEY_PAIR] を選択した場合は、このフィールドが必須になります。
    6. [Is Private key encrypted] で、秘密鍵がパスフレーズで暗号化されている場合は、このフィールドを選択します。
    7. [秘密鍵のパスフレーズ] に、暗号化された秘密鍵のパスフレーズを入力します。[Auth mechanism] フィールドと [Is Private Key Encrypted] フィールドで KEY_PAIR を選択した場合、このフィールドは必須です。
    8. [ウェアハウス] に、このデータ転送の実行に使用されるウェアハウスを入力します。
    9. [サービス アカウント] に、このデータ転送で使用するサービス アカウントを入力します。サービス アカウントには、storage.objects.liststorage.objects.get必要な権限が付与されている必要があります。
    10. [データベース] に、このデータ転送に含まれるテーブルを含む Snowflake データベースの名前を入力します。
    11. [スキーマ] に、このデータ転送に含まれるテーブルを含む Snowflake スキーマの名前を入力します。
    12. [Table name patterns] に、スキーマ内のテーブル名と一致する名前またはパターンを入力して、転送するテーブルを指定します。正規表現を使用してパターンを指定できます(例: table1_regex;table2_regex)。このパターンは、Java の正規表現の構文に従っている必要があります。次に例を示します。

      • lineitem;ordertb は、lineitemordertb という名前のテーブルに一致します。
      • .* はすべてのテーブルを照合します。
    13. [Translation output GCS path] に、変換エンジンのスキーマ マッピング ファイルを含む Cloud Storage フォルダへのパスを指定します。

      • パスは translation_target_base_uri/metadata/config/db/schema/ の形式で、/ で終わる必要があります。
    14. [Storage integration object name] に、Snowflake ストレージ統合オブジェクトの名前を入力します。この例では S3 です。

    15. [クラウド プロバイダ] で、[AWS] を選択します。

    16. GCS URI、Azure ストレージ アカウント名、Azure コンテナ名、Azure SAS は、空白のままにします。

    17. [Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。

    18. [アクセスキー ID] と [シークレット アクセスキー] に、アクセスキー ペアを入力します。

  7. 省略可: [通知オプション] セクションで、次のようにします。

    1. 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
    2. [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。
  8. [保存] をクリックします。

  9. この転送のリソース名を含むすべての転送設定の詳細が Trusted Cloud コンソールに表示されます。

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。次のフラグも必要です。

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params
bq mk \
    --transfer_config \
    --project_id=project_id \
    --data_source=data_source \
    --target_dataset=dataset \
    --display_name=name \
    --service_account_name=service_account \
    --params='parameters'

次のように置き換えます。

  • project_id: 実際の Trusted Cloud by S3NS プロジェクト ID。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。
  • data_source: データソース(snowflake_migration)。
  • dataset: 転送構成の BigQuery ターゲット データセット。
  • name: 転送構成の表示名。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
  • service_account: (省略可)転送の認証に使用されるサービス アカウント名。サービス アカウントは、転送の作成に使用した project_id が所有している必要があります。また、必要なロールがすべて付与されている必要があります。
  • parameters: 作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'

Snowflake の転送構成に必要なパラメータは次のとおりです。

  • account_identifier: Snowflake アカウントの固有識別子を指定します。これは、組織名とアカウント名を組み合わせたものです。この ID は、Snowflake アカウント URL の接頭辞であり、完全な URL ではありません。例: account_identifier.snowflakecomputing.com
  • username: Snowflake テーブルを転送するためにデータベースにアクセスする際に、認証情報と認可が使用される Snowflake ユーザーのユーザー名を指定します。
  • auth_mechanism: Snowflake ユーザーの認証方法を指定します。サポートされる値は PASSWORDKEY_PAIR です。詳細については、認証用の鍵ペアを生成するをご覧ください。
  • password: Snowflake ユーザーのパスワードを指定します。auth_mechanism フィールドで PASSWORD を指定した場合、このフィールドは必須です。
  • private_key: Snowflake ユーザーに関連付けられた公開鍵にリンクされている秘密鍵を指定します。auth_mechanism フィールドで KEY_PAIR を指定した場合、このフィールドは必須です。
  • is_private_key_encrypted: 秘密鍵がパスフレーズで暗号化されている場合は、true を指定します。
  • private_key_passphrase: 暗号化された秘密鍵のパスフレーズを指定します。auth_mechanism フィールドで KEY_PAIR を指定し、is_private_key_encrypted フィールドで true を指定した場合、このフィールドは必須です。
  • warehouse: このデータ転送の実行に使用されるウェアハウスを指定します。
  • service_account: このデータ転送で使用するサービス アカウントを指定します。サービス アカウントは、転送構成と宛先データセットが作成された同じ Trusted Cloud by S3NS プロジェクトに属している必要があります。サービス アカウントには、storage.objects.liststorage.objects.get必要な権限が付与されている必要があります。
  • database: このデータ転送に含まれるテーブルを含む Snowflake データベースの名前を指定します。
  • schema: このデータ転送に含まれるテーブルを含む Snowflake スキーマの名前を指定します。
  • table_name_patterns: スキーマ内のテーブル名と一致する名前またはパターンを入力して、転送するテーブルを指定します。正規表現を使用してパターンを指定できます(例: table1_regex;table2_regex)。このパターンは、Java の正規表現の構文に従っている必要があります。次に例を示します。

    • lineitem;ordertb は、lineitemordertb という名前のテーブルに一致します。
    • .* はすべてのテーブルを照合します。

      このフィールドを空白のままにして、指定したスキーマからすべてのテーブルを移行することもできます。

  • translation_output_gcs_path: 変換エンジンからのスキーマ マッピング ファイルを含む Cloud Storage フォルダへのパスを指定します。

    • パスは gs://translation_target_base_uri/metadata/config/db/schema/ の形式で、/ で終わる必要があります。
  • storage_integration_object_name: Snowflake ストレージ統合オブジェクトの名前を指定します。この例では S3 です。

  • cloud_provider: AWS を指定します。

  • amazon_s3_uri: ステージング領域として使用する S3 バケットの URI を指定します。

  • aws_access_key_id: アクセス キーペアを指定します。

  • aws_secret_access_key: アクセス キーペアを指定します。

たとえば、次のコマンドは、your_bq_dataset というターゲット データセットと ID your_project_id のプロジェクトを使用して、snowflake transfer config という名前の Snowflake 転送を作成します。

  PARAMS='{
  "account_identifier": "your_account_identifier",
  "auth_mechanism": "KEY_PAIR",
  "aws_access_key_id": "your_access_key_id",
  "aws_secret_access_key": "your_aws_secret_access_key",
  "cloud_provider": "AWS",
  "database": "your_sf_database",
  "private_key": "-----BEGIN PRIVATE KEY----- privatekey\nseparatedwith\nnewlinecharacters=-----END PRIVATE KEY-----",
  "schema": "your_snowflake_schema",
  "service_account": "your_service_account",
  "storage_integration_object_name": "your_storage_integration_object",
  "staging_s3_uri": "s3://your/s3/bucket/uri",
  "table_name_patterns": ".*",
  "translation_output_gcs_path": "gs://sf_test_translation/output/metadata/config/database_name/schema_name/",
  "username": "your_sf_username",
  "warehouse": "your_warehouse"
}'

bq mk --transfer_config \
    --project_id=your_project_id \
    --target_dataset=your_bq_dataset \
    --display_name='snowflake transfer config' \
    --params="$PARAMS" \
    --data_source=snowflake_migration

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

割り当てと上限

BigQuery の読み込み割り当て量は、読み込みジョブごと各テーブルあたり 15 TB です。Snowflake は内部でテーブルデータを圧縮するため、エクスポートされたテーブルサイズは、Snowflake で提示されたテーブルサイズより大きくなります。15 TB を超えるテーブルを移行する場合は、dts-migration-preview-support@google.com までお問い合わせください。

Amazon S3 の整合性モデルにより、一部のファイルが BigQuery への転送に含まれない可能性があります。

料金

BigQuery Data Transfer Service の料金については、料金をご覧ください。

  • Snowflake ウェアハウスと Amazon S3 バケットが異なるリージョンにある場合、Snowflake データ転送を実行すると、Snowflake は下り(外向き)料金を適用します。Snowflake ウェアハウスと Amazon S3 バケットの両方が同じリージョンにある場合、Snowflake データ転送に下り(外向き)料金は発生しません。
  • AWS から Trusted Cloudにデータを転送すると、クラウド間の下り(外向き)料金が適用されます。

次のステップ