Snowflake のスキーマの検出とマッピング
このガイドでは、Snowflake から BigQuery にデータを転送するときにスキーマを定義する方法について説明します。BigQuery Data Transfer Service を使用してスキーマとデータ型のマッピングを自動的に検出することも、変換エンジンを使用してスキーマとデータ型を手動で定義することもできます。
デフォルトのスキーマ検出
Snowflake コネクタは、Snowflake テーブル スキーマを自動的に検出できます。スキーマの自動検出を使用するには、Snowflake の転送を設定するときに、[Translation output GCS path] フィールドを空白のままにします。
次のリストは、Snowflake コネクタが Snowflake データ型を BigQuery にマッピングする方法を示しています。
- 次のデータ型は、BigQuery で
STRINGとしてマッピングされます。TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- 次のデータ型は、BigQuery で
TIMESTAMPとしてマッピングされます。TIMESTAMP_NTZ
他のすべての Snowflake データ型は、BigQuery の同等の型に直接マッピングされます。
スキーマに変換エンジン出力を使用する
スキーマを手動で定義する(特定のスキーマ属性をオーバーライドするなど)には、次の手順でメタデータを生成して変換エンジンを実行します。
制限事項
データは、BigQuery に読み込まれる前に、Parquet データ形式で Snowflake から抽出されます。
- 次の Parquet データ型はサポートされていません。
TIMESTAMP_TZ、TIMESTAMP_LTZ- 詳細については、Snowflake データを評価するをご覧ください。
次の Parquet データ型はサポートされていませんが、変換できます。
TIMESTAMP_NTZOBJECT、VARIANT、ARRAY
グローバル型変換構成 YAML を使用して、変換エンジンを実行するときに、これらのデータ型のデフォルトの動作をオーバーライドします。
構成 YAML は次の例のようになります。
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP json: VARCHAR
- 次の Parquet データ型はサポートされていません。
BigQuery Data Transfer Service for Snowflake コネクタは、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 権限を付与する必要があります。
転送構成と宛先データセットが作成される Google Cloud プロジェクトに属しているサービス アカウントを使用することをおすすめします。サービス アカウントが BigQuery データ転送を作成したプロジェクトとは異なる Google Cloud プロジェクトのサービス アカウントである場合は、プロジェクト間のサービス アカウントの承認を有効にする必要があります。
詳細については、BigQuery の IAM ロールと権限をご覧ください。