Snowflake 的結構定義偵測和對應
本指南說明如何從 Snowflake 轉移資料至 BigQuery 時定義結構定義。您可以使用 BigQuery 資料移轉服務自動偵測結構定義和資料類型對應,也可以使用轉譯引擎手動定義結構定義和資料類型。
預設結構定義偵測
Snowflake 連接器可自動偵測 Snowflake 資料表結構定義。如要使用自動結構定義偵測功能,請在設定 Snowflake 轉移作業時,將「翻譯輸出內容 GCS 路徑」欄位留空。
下表顯示 Snowflake 連接器如何將 Snowflake 資料類型對應至 BigQuery:
- 下列資料類型會在 BigQuery 中對應為
STRING:TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- 下列資料類型會在 BigQuery 中對應為
TIMESTAMP:TIMESTAMP_NTZ
所有其他 Snowflake 資料類型都會直接對應至 BigQuery 中的同等類型。
使用翻譯引擎輸出內容做為結構定義
如要手動定義結構定義 (例如覆寫特定結構定義屬性),可以產生中繼資料,並按照下列步驟執行翻譯引擎:
限制
系統會先以 Parquet 資料格式從 Snowflake 擷取資料,再載入至 BigQuery:
- 系統不支援下列 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 資料表遷移至 BigQuery 時,Snowflake 連接器的 BigQuery 資料移轉服務會使用 BigQuery 遷移服務翻譯引擎進行結構定義對應。如要完成 Snowflake 資料轉移,請先產生用於翻譯的中繼資料,然後執行翻譯引擎:
- 執行 Snowflake 的
dwh-migration-tool。詳情請參閱「產生翻譯和評估用的中繼資料」。 - 將產生的
metadata.zip檔案上傳至 Cloud Storage bucket。翻譯引擎會將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 專案 屬於同一個專案。如果服務帳戶位於 Google Cloud 的專案與建立 BigQuery 資料移轉作業的專案不同,則必須啟用跨專案服務帳戶授權。
詳情請參閱「BigQuery IAM 角色和權限」。