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 コネクタを使用して行うデータ転送には、次の制限があります。
- データ転送は、AWS でホストされている Snowflake アカウントからのみサポートされます。 Trusted Cloud by S3NS または Microsoft Azure でホストされている Snowflake アカウントからのデータ転送はサポートされていません。
- Snowflake コネクタは増分データ転送をサポートしていません。
- Snowflake コネクタは、単一の Snowflake データベースとスキーマ内のテーブルからの転送のみをサポートします。複数の Snowflake データベースまたはスキーマを含むテーブルから転送するには、転送ジョブを個別に設定します。
- Snowflake から Amazon S3 バケットへのデータ読み込み速度は、この転送用に選択した Snowflake ウェアハウスによって制限されます。
データは、BigQuery に読み込まれる前に、Parquet データ形式で Snowflake から抽出されます。
- 次の Parquet データ型はサポートされていません。
TIMESTAMP_TZ
、TIMESTAMP_LTZ
OBJECT
、VARIANT
、ARRAY
- 詳細については、Snowflake データの評価をご覧ください。
次の Parquet データ型はサポートされていませんが、変換できます。
TIMESTAMP_NTZ
メタデータを生成して変換エンジンを実行するときに、グローバル型変換構成 YAML を使用して、
DATETIME
変換のデフォルトの動作をTIMESTAMP
にオーバーライドします。構成 YAML は次の例のようになります。
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- 次の Parquet データ型はサポートされていません。
始める前に
Snowflake 転送を設定する前に、このセクションに記載されているすべての手順を行う必要があります。必要な手順は次のとおりです。
- Trusted Cloud プロジェクトを準備する
- 必要な BigQuery のロール
- Amazon S3 バケットを準備する
- 必要な権限を持つ Snowflake ユーザーを作成する
- ネットワーク ポリシーを追加する
- メタデータを生成して変換エンジンを実行する
- Snowflake でサポートされていないデータ型を評価する
- 転送情報を収集する
Trusted Cloud プロジェクトを準備する
次の手順で、Snowflake 転送用の Trusted Cloud プロジェクトを作成して構成します。
Trusted Cloud by S3NS プロジェクトを作成するか、既存のプロジェクトを使用します。
BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
データを保存する BigQuery データセットを作成します。テーブルを作成する必要はありません。
必要な BigQuery のロール
転送の作成に必要な権限を取得するには、BigQuery 管理者(roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
転送を作成するには、次の権限が必要です。
-
転送構成を作成するユーザー アカウントまたはサービス アカウントに対する
bigquery.transfers.update
-
転送構成を作成するユーザー アカウントまたはサービス アカウントに対する
bigquery.datasets.get
-
転送構成を作成するユーザー アカウントまたはサービス アカウントに対する
bigquery.datasets.update
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Amazon S3 バケットを準備する
Snowflake データ転送を完了するには、Amazon S3 バケットを作成し、Snowflake からの書き込みアクセスを許可するように構成する必要があります。
Amazon S3 バケットを作成します。Amazon S3 バケットは、BigQuery に読み込む前にデータをステージングするために使用されます。
Snowflake ストレージ統合オブジェクトを作成して構成し、Snowflake が外部ステージとして Amazon S3 バケットにデータを書き込めるようにします。
Amazon S3 バケットに対する読み取りアクセスを許可するには、次の操作も行う必要があります。
専用の Amazon IAM ユーザーを作成し、AmazonS3ReadOnlyAccess ポリシーを付与します。
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 アドレスを追加する手順は次のとおりです。
type
=IPV4
のネットワーク ルールを作成します。BigQuery Data Transfer Service は、JDBC 接続を使用して Snowflake アカウントに接続します。- 先ほど作成したネットワーク ルールと、次の表の 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 データ転送を完了するには、まず変換用のメタデータを生成してから、変換エンジンを実行する必要があります。
- Snowflake 用の
dwh-migration-tool
を実行します。詳細については、変換と評価のためのメタデータを生成するをご覧ください。 - 生成された
metadata.zip
ファイルを Cloud Storage バケットにアップロードします。metadata.zip
ファイルは、変換エンジンの入力として使用されます。 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_TZ
と TIMESTAMP_LTZ
のデータ型をサポートしていません。データにこれらの型が含まれている場合は、CSV ファイルとして Amazon S3 にエクスポートし、CSV ファイルを BigQuery にインポートできます。詳細については、Amazon S3 の転送の概要をご覧ください。
転送情報を収集する
BigQuery Data Transfer Service で移行を設定するために必要な情報を収集します。
- Snowflake アカウント ID(Snowflake アカウント URL の接頭辞)。例:
ACCOUNT_IDENTIFIER.snowflakecomputing.com
- Snowflake データベースに対する適切な権限を持つユーザー名と関連する秘密鍵。データ転送を実行するために必要な権限のみを持つことができます。
- 転送に使用する Amazon S3 バケットの URI と AWS ユーザー アクセスキーのペア。このバケットにライフサイクル ポリシーを設定して、不要な課金が発生しないようにすることをおすすめします。
- 変換エンジンから取得したスキーマ マッピング ファイルを保存した Cloud Storage バケットの URI。
Snowflake の転送を設定する
次のオプションのいずれかを選択します。
コンソール
Trusted Cloud コンソールの [データ転送] ページに移動します。
[
転送を作成] をクリックします。[ソースタイプ] セクションで、[ソース] リストから [Snowflake Migration] を選択します。
[転送構成名] セクションで、[表示名] フィールドに、
My migration
などの転送の名前を入力します。表示名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。[転送先の設定] セクションで、[データセット] リストから作成したデータセットを選択します。
[データソースの詳細] セクションで、次のようにします。
- [Account identifier] に、Snowflake アカウントの固有識別子(組織名とアカウント名の組み合わせ)を入力します。この ID は、Snowflake アカウント URL の接頭辞であり、完全な URL ではありません。例:
ACCOUNT_IDENTIFIER.snowflakecomputing.com
- [ユーザー名] に、Snowflake テーブルの転送のためにデータベースへのアクセスに使用される認証情報と認可を持つ Snowflake ユーザーのユーザー名を入力します。この転送用に作成したユーザーを使用することをおすすめします。
- [Auth mechanism] で、Snowflake ユーザーの認証方法を選択します。詳細については、認証用の鍵ペアを生成するをご覧ください。
- [パスワード] に、Snowflake ユーザーのパスワードを入力します。 [Auth mechanism] フィールドで [PASSWORD] を選択した場合、このフィールドは必須です。
- [秘密鍵] に、Snowflake ユーザーの公開鍵に関連付けられている秘密鍵を入力します。[Auth mechanism] フィールドで [KEY_PAIR] を選択した場合は、このフィールドが必須になります。
- [Is Private key encrypted] で、秘密鍵がパスフレーズで暗号化されている場合は、このフィールドを選択します。
- [秘密鍵のパスフレーズ] に、暗号化された秘密鍵のパスフレーズを入力します。[Auth mechanism] フィールドと [Is Private Key Encrypted] フィールドで KEY_PAIR を選択した場合、このフィールドは必須です。
- [ウェアハウス] に、このデータ転送の実行に使用されるウェアハウスを入力します。
- [サービス アカウント] に、このデータ転送で使用するサービス アカウントを入力します。サービス アカウントには、
storage.objects.list
とstorage.objects.get
の必要な権限が付与されている必要があります。 - [データベース] に、このデータ転送に含まれるテーブルを含む Snowflake データベースの名前を入力します。
- [スキーマ] に、このデータ転送に含まれるテーブルを含む Snowflake スキーマの名前を入力します。
[Table name patterns] に、スキーマ内のテーブル名と一致する名前またはパターンを入力して、転送するテーブルを指定します。正規表現を使用してパターンを指定できます(例:
table1_regex;table2_regex
)。このパターンは、Java の正規表現の構文に従っている必要があります。次に例を示します。lineitem;ordertb
は、lineitem
とordertb
という名前のテーブルに一致します。.*
はすべてのテーブルを照合します。
[Translation output GCS path] に、変換エンジンのスキーマ マッピング ファイルを含む Cloud Storage フォルダへのパスを指定します。
- パスは
translation_target_base_uri/metadata/config/db/schema/
の形式で、/
で終わる必要があります。
- パスは
[Storage integration object name] に、Snowflake ストレージ統合オブジェクトの名前を入力します。この例では
S3
です。[クラウド プロバイダ] で、[
AWS
] を選択します。GCS URI、Azure ストレージ アカウント名、Azure コンテナ名、Azure SAS は、空白のままにします。
[Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。
[アクセスキー ID] と [シークレット アクセスキー] に、アクセスキー ペアを入力します。
- [Account identifier] に、Snowflake アカウントの固有識別子(組織名とアカウント名の組み合わせ)を入力します。この ID は、Snowflake アカウント URL の接頭辞であり、完全な URL ではありません。例:
省略可: [通知オプション] セクションで、次のようにします。
[保存] をクリックします。
この転送のリソース名を含むすべての転送設定の詳細が 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 ユーザーの認証方法を指定します。サポートされる値はPASSWORD
とKEY_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.list
とstorage.objects.get
の必要な権限が付与されている必要があります。database
: このデータ転送に含まれるテーブルを含む Snowflake データベースの名前を指定します。schema
: このデータ転送に含まれるテーブルを含む Snowflake スキーマの名前を指定します。table_name_patterns
: スキーマ内のテーブル名と一致する名前またはパターンを入力して、転送するテーブルを指定します。正規表現を使用してパターンを指定できます(例:table1_regex;table2_regex
)。このパターンは、Java の正規表現の構文に従っている必要があります。次に例を示します。lineitem;ordertb
は、lineitem
とordertb
という名前のテーブルに一致します。.*
はすべてのテーブルを照合します。このフィールドを空白のままにして、指定したスキーマからすべてのテーブルを移行することもできます。
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にデータを転送すると、クラウド間の下り(外向き)料金が適用されます。
次のステップ
- BigQuery Data Transfer Service の詳細を確認する。
- Batch SQL 変換を使用して SQL コードを移行する。