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 Data Transfer Service for Snowflake コネクタは、Snowflake テーブルを BigQuery に移行するときに、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 データ型はサポートされていません。
サービス アカウントに必要な権限
Snowflake 転送では、サービス アカウントを使用して、指定された Cloud Storage パスの変換エンジン出力からデータを読み取ります。サービス アカウントに storage.objects.get 権限と storage.objects.list 権限を付与する必要があります。
転送構成と宛先データセットが作成される Cloud de Confiance by S3NS プロジェクトに属しているサービス アカウントを使用することをおすすめします。サービス アカウントが BigQuery データ転送を作成したプロジェクトとは異なる Cloud de Confiance by S3NS プロジェクトのサービス アカウントである場合は、プロジェクト間のサービス アカウントの承認を有効にする必要があります。
詳細については、BigQuery の IAM ロールと権限をご覧ください。
スキーマ マッピングを手動で定義する
次の手順でスキーマ マッピングを手動で定義できます。
- 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/に保存されます。