排定 Snowflake 轉移作業

BigQuery 資料移轉服務提供的 Snowflake 連接器可讓您排定及管理自動移轉工作,使用公開 IP 允許清單將資料從 Snowflake 移轉至 BigQuery。

總覽

Snowflake 連接器會與 Google Kubernetes Engine 中的遷移代理程式相互通訊,並觸發從 Snowflake 傳輸至暫存區的載入作業,而暫存區與 Snowflake 位於同一雲端服務供應商。

  • 如果是 Amazon Web Services (AWS) 代管的 Snowflake 帳戶,資料會先暫存在 Amazon S3 值區,然後透過 BigQuery 資料移轉服務移轉至 BigQuery。
  • 如果是Cloud de Confiance代管的 Snowflake 帳戶,資料會先暫存在 Cloud Storage 值區,然後透過 BigQuery 資料移轉服務移轉至 BigQuery。
  • 如果是 Azure 代管的 Snowflake 帳戶,資料會先暫存在 Azure Blob 儲存體容器中,然後透過 BigQuery 資料移轉服務移轉至 BigQuery。

下圖比較從其他雲端服務供應商代管的 Snowflake 帳戶,以及 Cloud de Confiance代管的 Snowflake 帳戶傳輸資料的差異。

將資料從 AWS 或 Azure 代管的 Snowflake 帳戶,以及 Cloud de Confiance代管的 Snowflake 帳戶移轉至 BigQuery

限制

使用 Snowflake 連接器進行資料轉移時,須遵守下列限制:

  • Snowflake 連接器僅支援從單一 Snowflake 資料庫和結構定義中的資料表轉移資料。如要從具有多個 Snowflake 資料庫或結構定義的資料表轉移資料,可以分別設定每項轉移工作。
  • 從 Snowflake 將資料載入 Amazon S3 值區、Azure Blob 儲存體容器或 Cloud Storage 值區的速度,取決於您為這項轉移作業選擇的 Snowflake 倉庫。
  • BigQuery 會將 Snowflake 中的資料以 Parquet 檔案的形式寫入 Cloud Storage。Parquet 檔案不支援 TIMESTAMP_TZTIMESTAMP_LTZ 資料類型。如果資料包含這些類型,您可以將資料匯出至 Amazon S3 做為 CSV 檔案,然後將 CSV 檔案匯入 BigQuery。詳情請參閱 Amazon S3 移轉作業總覽

事前準備

設定 Snowflake 轉移作業前,請務必完成本節列出的所有步驟。以下列出所有必要步驟。

  1. 準備 Cloud de Confiance 專案
  2. 必要 BigQuery 角色
  3. 準備暫存 bucket
  4. 建立具備必要權限的 Snowflake 使用者
  5. 新增網路政策
  6. 選用:結構定義偵測和對應
  7. 評估 Snowflake 是否有任何不支援的資料類型
  8. 選用:啟用增量轉移
  9. 選用步驟:啟用私人連線
  10. 收集轉移資訊
  11. 如果您打算指定客戶自行管理的加密金鑰 (CMEK),請確保服務帳戶具有加密和解密權限,且您擁有使用 CMEK 時所需的 Cloud KMS 金鑰資源 ID。如要瞭解 CMEK 如何與移轉作業搭配運作,請參閱「指定移轉作業加密金鑰」。

準備 Cloud de Confiance 專案

請按照下列步驟,建立及設定 Snowflake 轉移專案: Cloud de Confiance

  1. 建立 Cloud de Confiance by S3NS 專案或選取現有專案。

  2. 確認您已完成啟用 BigQuery 資料移轉服務的一切必要動作。

  3. 建立 BigQuery 資料集來儲存資料。您無須建立任何資料表。

必要的 BigQuery 角色

如要取得建立 BigQuery 資料移轉服務資料移轉作業所需的權限,請要求系統管理員在專案中授予您 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備建立 BigQuery 資料移轉服務資料移轉作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立 BigQuery 資料移轉服務資料移轉作業,您必須具備下列權限:

  • BigQuery 資料移轉服務權限:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • BigQuery 權限:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

詳情請參閱「授予 bigquery.admin 存取權」。

準備暫存 bucket

如要完成 Snowflake 資料移轉,您必須建立暫存 bucket,然後設定該 bucket,允許 Snowflake 寫入資料。

選取下列選項之一:

AWS

AWS 代管 Snowflake 帳戶的暫存值區

如果是 AWS 代管的 Snowflake 帳戶,請建立 Amazon S3 值區來暫存 Snowflake 資料,再將資料載入 BigQuery。

  1. 建立 Amazon S3 bucket

  2. 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Amazon S3 值區,做為外部階段。

如要允許 Amazon S3 bucket 的讀取權限, 您也必須執行下列操作:

  1. 建立專用的 Amazon IAM 使用者,並授予 AmazonS3ReadOnlyAccess 政策。

  2. 為 IAM 使用者建立 Amazon 存取金鑰組

Azure

Azure 託管 Snowflake 帳戶的暫存 Azure Blob 儲存體容器

如果是 Azure 代管的 Snowflake 帳戶,請建立 Azure Blob 儲存體容器,暫存 Snowflake 資料,再載入 BigQuery。

  1. 建立 Azure 儲存體帳戶,並在其中建立儲存體容器
  2. 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Azure 儲存空間容器,做為外部階段。請注意,由於我們不會使用「步驟 3:建立外部階段」,因此可以略過。

如要允許讀取 Azure 容器,請為該容器產生 SAS 權杖

Cloud de Confiance

Cloud de Confiance代管 Snowflake 帳戶的暫存值區

如果是 Cloud de Confiance代管的 Snowflake 帳戶,請建立 Cloud Storage bucket,暫存 Snowflake 資料,再載入 BigQuery。

  1. 建立 Cloud Storage 值區
  2. 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Cloud Storage bucket 做為外部階段。
  3. 如要允許存取暫存 bucket,請使用下列指令,將 roles/storage.objectViewer 角色授予 DTS 服務代理

    gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer

建立具備必要權限的 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 金鑰組,然後將公開金鑰指派給 Snowflake 使用者,藉此設定金鑰組。詳情請參閱「設定金鑰配對驗證」。

新增聯播網政策

如要使用公開連線,Snowflake 帳戶預設允許透過資料庫憑證進行公開連線。不過,您可能已設定網路規則或政策,導致 Snowflake 連接器無法連線至帳戶。在這種情況下,您必須將必要的 IP 位址加入許可清單。詳情請參閱「設定 Snowflake 轉移作業的網路政策」。

偵測及對應結構定義

如要定義結構定義,您可以使用 BigQuery 資料移轉服務,在將資料從 Snowflake 移轉至 BigQuery 時,自動偵測結構定義和資料類型對應。或者,您也可以使用翻譯引擎手動定義架構和資料類型。

詳情請參閱「Snowflake 的結構定義偵測和對應」。

啟用遞增式轉移

如要設定 Snowflake 資料的增量移轉,請參閱設定 Snowflake 的增量移轉

啟用私人連線

如要建立私人的 Snowflake 資料移轉作業,請務必設定網路以進行私人連線

收集轉移資訊

收集使用 BigQuery 資料移轉服務設定遷移作業所需的資訊:

設定 Snowflake 轉移作業

選取下列選項之一:

控制台

  1. 前往 Cloud de Confiance 控制台的「資料移轉」頁面。

    前往「資料轉移」頁面

  2. 按一下 「建立轉移作業」

  3. 在「來源類型」部分,從「來源」清單中選取「Snowflake 遷移」

  4. 在「Transfer config name」(轉移設定名稱) 區段中,於「Display name」(顯示名稱) 欄位輸入移轉作業的名稱,例如 My migration。顯示名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。

  5. 在「Destination settings」(目的地設定) 部分,從「Dataset」(資料集) 清單中選擇您建立的資料集

  6. 在「Snowflake Credentials」(Snowflake 憑證) 部分,執行下列操作:

    1. 在「帳戶 ID」中,輸入 Snowflake 帳戶的專屬 ID,也就是機構名稱和帳戶名稱的組合。這個 ID 是 Snowflake 帳戶網址的前置字元,而非完整網址。例如:ACCOUNT_IDENTIFIER.snowflakecomputing.com
    2. 在「Username」(使用者名稱) 中,輸入 Snowflake 使用者名稱。系統會使用該使用者的憑證和授權,存取資料庫以轉移 Snowflake 資料表。建議您使用為這項轉移作業建立的使用者
    3. 在「Authentication Mechanism」部分,選取 Snowflake 使用者驗證方法:

      密碼

      • 在「Password」(密碼) 中輸入 Snowflake 使用者的密碼。

      KEY_PAIR

      • 在「Private Key」(私密金鑰),輸入與與 Snowflake 使用者相關聯的公開金鑰連結的私密金鑰。
      • 如要使用通關密語加密私密金鑰,請選取「Is Private Key Encrypted」(私密金鑰是否已加密) 欄位。
      • 在「Private Key Passphrase」(私密金鑰通關密語) 部分,輸入加密私密金鑰的通關密語。如果您已選取「私密金鑰是否經過加密」,就必須填寫這個欄位。 詳情請參閱「產生金鑰組以進行驗證」。
    • 在「Warehouse」中,輸入用於執行這項資料移轉作業的倉庫
    • 在「Snowflake Database」(Snowflake 資料庫) 中,輸入包含此資料移轉所含資料表的 Snowflake 資料庫名稱。
    • 在「Snowflake Schema」(Snowflake 結構定義) 中,輸入包含此資料移轉作業所含資料表的 Snowflake 結構定義名稱。
  7. 在「儲存空間設定」部分,執行下列操作:

    1. 在「Storage integration object name」(儲存空間整合物件名稱) 中,輸入 Snowflake 儲存空間整合物件的名稱。
    2. 選用:在「檔案大小上限」中,指定從 Snowflake 卸載至暫存位置的每個檔案大小上限 (以 MB 為單位)。
    3. 在「Cloud Provider」(雲端服務供應商) 部分,根據代管 Snowflake 帳戶的雲端服務供應商,選取 AWSAZUREGCP

      AWS

      • 在「Amazon S3 URI」部分,輸入將做為暫存區使用的 Amazon S3 值區的 URI
      • 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(存取密鑰) 部分,輸入存取金鑰組

      Azure

      Cloud de Confiance

  8. 在「服務帳戶」部分執行下列操作:

    1. 在「服務帳戶」中,輸入要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於移轉設定和目的地資料集建立所在的Cloud de Confiance by S3NS 專案。服務帳戶必須具備 storage.objects.liststorage.objects.get 必要權限
  9. 在「結構定義設定」部分,執行下列操作:

    1. 在「Ingestion type」(擷取類型) 部分,選取「Full」(完整) 或「Incremental」(增量)。詳情請參閱「資料擷取行為」一文。
    2. 在「Table name patterns」(資料表名稱格式) 部分,輸入符合結構定義中資料表名稱的名稱或格式,指定要移轉的資料表。您可以使用規則運算式指定模式,例如 table1_regex;table2_regex。此格式必須遵循 Java 規則運算式語法。例如:
      • lineitem;ordertb 會比對名為 lineitemordertb 的資料表。
      • .* 會比對所有資料表。
    3. 選用:如要「使用 BigQuery Translation Engine 輸出」,請選取這個欄位,指定自訂的翻譯輸出路徑。
    4. 選用:在「翻譯輸出 GCS 路徑」中,指定 Cloud Storage 資料夾的路徑,該資料夾包含翻譯引擎的結構對應檔案。您可以將此欄位留空,讓 Snowflake 連接器自動偵測結構定義。
      • 路徑應採用 translation_target_base_uri/metadata/config/db/schema/ 格式,且結尾必須為 /
    5. 選用:在「自訂架構檔案路徑」中,指定自訂架構檔案的 Cloud Storage 路徑。
    6. 選用:如要將零比例的 Snowflake NUMBER 對應至 BigQuery INT64,請選取這個欄位,將 Snowflake NUMBER(p, 0) 型別對應至 BigQuery INT64
  10. 在「網路連線」部分,執行下列操作:

    1. 如要使用私人網路,請在建立私人資料轉移時選取「True」
    2. 如果是 PSC 服務連結,請輸入服務連結 URI (如要建立私人連線)。詳情請參閱「建立私有 Snowflake 轉移設定」。
    3. 如果是 Private Network Service,請輸入服務目錄的自我連結,建立私人資料移轉作業。詳情請參閱「建立私有 Snowflake 轉移設定」。
  11. 選用:在「Notification options」(通知選項) 專區,執行下列操作:

    1. 按一下啟用電子郵件通知的切換開關。啟用這個選項之後,若移轉失敗,移轉作業管理員就會收到電子郵件通知。
    2. 在「Select a Pub/Sub topic」(選取 Pub/Sub 主題) 選取主題名稱,或是點選「Create a topic」(建立主題)。這個選項會針對移轉作業設定 Pub/Sub 執行通知
  12. 如果使用 CMEK,請在「Advanced options」(進階選項) 部分選取「Customer-managed key」(客戶管理的金鑰)。畫面隨即會列出可用的 CMEK 供您選擇。如要瞭解 CMEK 如何與 BigQuery 資料移轉服務搭配運作,請參閱指定移轉作業加密金鑰的相關說明。

  13. 按一下 [儲存]

  14. Cloud de Confiance 控制台會顯示移轉設定的所有詳細資料,包括此移轉作業的「Resource name」(資源名稱)

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:您的 Cloud de Confiance 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,也就是機構名稱和帳戶名稱的組合。這個 ID 是 Snowflake 帳戶網址的前置字元,而非完整網址。例如: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:指定要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於建立移轉設定和目的地資料集的相同 Cloud de Confiance by S3NS 專案。服務帳戶必須具備 storage.objects.liststorage.objects.get 必要權限
  • database:指定包含此資料轉移作業所用資料表的 Snowflake 資料庫名稱。
  • schema:指定包含此資料移轉所含資料表的 Snowflake 結構定義名稱。
  • table_name_patterns:輸入名稱或符合結構定義中資料表名稱的格式,指定要轉移的資料表。您可以使用規則運算式指定模式,例如 table1_regex;table2_regex。此格式必須遵循 Java 規則運算式語法。例如,假設使用者要求系統 將文字從英文翻譯成法文

    • lineitem;ordertb 會比對名為 lineitemordertb 的資料表。
    • .* 會比對所有資料表。

      您也可以將這個欄位留白,用以遷移所有來自指定結構定義的資料表。

  • ingestion_mode:指定轉移的擷取模式。支援的值為 FULLINCREMENTAL。詳情請參閱「資料擷取行為」。

  • translation_output_gcs_path:(選用) 指定 Cloud Storage 資料夾的路徑,該資料夾包含翻譯引擎的結構定義對應檔案。您可以將此欄位留空,讓 Snowflake 連接器自動偵測結構定義。

    • 路徑應採用 gs://translation_target_base_uri/metadata/config/db/schema/ 格式,且結尾必須為 /
  • storage_integration_object_name:指定 Snowflake 儲存空間整合物件的名稱。

  • cloud_provider:輸入 AWSAZUREGCP,視代管 Snowflake 帳戶的雲端服務供應商而定。

  • staging_s3_uri:輸入將做為暫存區使用的 S3 值區 URI。只有在 cloud_providerAWS 時才需要。

  • aws_access_key_id:輸入存取金鑰組。只有在 cloud_providerAWS 時才需要。

  • aws_secret_access_key:輸入存取金鑰組。只有在 cloud_providerAWS 時才需要。

  • azure_storage_account:輸入要用做暫存區的儲存空間帳戶名稱。只有在 cloud_providerAZURE 時才需要。

  • staging_azure_container:輸入Azure Blob 儲存體中的容器,做為暫存區。只有在 cloud_providerAZURE 時才需要。

  • azure_sas_token:輸入 SAS 權杖。只有在 cloud_providerAZURE 時才需要。

  • staging_gcs_uri:輸入要用做暫存區的 Cloud Storage URI。只有在 cloud_providerGCP 時才需要。

  • use_private_network:如要建立私人資料轉移,請設為 TRUE

  • service_attachment:如要建立私人資料移轉作業,請指定服務連結 URI。詳情請參閱「建立私人 Snowflake 轉移設定」。

  • private_network_service:如果您要建立私人資料移轉作業,請指定 NLB 服務的自我連結。詳情請參閱「建立私有 Snowflake 轉移設定」。

舉例來說,如果是 AWS 代管的 Snowflake 帳戶,下列指令會建立名為 Snowflake transfer config 的 Snowflake 移轉作業,其中目標資料集的名稱為 your_bq_dataset,專案的 ID 為 your_project_id

  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",
  "ingestion_mode": "INCREMENTAL",
  "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 資源的執行個體。

指定轉移作業的加密金鑰

您可以指定客戶自行管理的加密金鑰 (CMEK),加密轉移作業的資料。您可以使用 CMEK 支援從 Snowflake 轉移資料。

指定移轉作業的 CMEK 後,BigQuery 資料移轉服務會將 CMEK 套用至所有已擷取資料的中間磁碟快取,確保整個資料移轉工作流程符合 CMEK 規定。

如果轉移作業最初並非使用 CMEK 建立,您就無法更新現有轉移作業來新增 CMEK。舉例來說,您無法將原本預設加密的目的地資料表,變更為使用 CMEK 加密。反之,您也無法將 CMEK 加密的目的地資料表變更為其他類型的加密。

如果移轉設定最初是使用 CMEK 加密功能建立,您可以更新移轉的 CMEK。更新移轉作業設定的 CMEK 時,BigQuery 資料移轉服務會在下次執行移轉作業時,將 CMEK 傳播至目的地資料表。屆時,BigQuery 資料移轉服務會在移轉作業執行期間,以新的 CMEK 取代任何過時的 CMEK。詳情請參閱「更新轉移作業」。

您也可以使用專案預設金鑰。 使用移轉作業指定專案預設金鑰時,BigQuery 資料移轉服務會將專案預設金鑰做為任何新移轉作業設定的預設金鑰。

配額與限制

根據預設,每個資料表之每個載入工作的 BigQuery 載入配額皆為 15 TB。Snowflake 會在內部壓縮資料表資料,因此匯出的資料表大小會大於 Snowflake 回報的資料表大小。

如要縮短大型資料表的載入時間,請為預留項目指派指定PIPELINE工作類型

由於 Amazon S3 的一致性模型,您可以在移轉到 BigQuery 時不納入部分檔案。

提升資料移轉效能

您可以查看資料移轉記錄,監控資料移轉作業的效能。為提升資料移轉效能,建議您執行下列最佳化步驟:

  • 將 Snowflake 執行個體、暫存值區和 BigQuery 資料集放在同一區域
  • 您可以透過下列方式提升資料表卸載速度:
    • 增加 Snowflake 虛擬倉庫的大小,特別是在傳輸大型 Snowflake 表格 (1 TiB 以上) 時。
    • 調整轉移設定中的 MAX_FILE_SIZE 選項。
      • 檔案越小,傳輸速度就越快,但如果檔案太小,可能會導致檔案數量過多。
  • 如要提升資料表載入速度,請增加 PIPELINEQUERY 工作類型的 BigQuery 運算單元預留項目數量。
  • 進行完整轉移時,請避免在目的地 BigQuery 資料表上進行叢集和分割。
  • 以新增或更新模式進行增量轉移時,請考慮在主鍵欄上進行叢集和分區,以提升轉移效能。
    • 不過,請避免在非主鍵資料欄上進行分區和分割,以免合併作業速度變慢。

定價

如要瞭解 BigQuery 資料移轉服務定價,請參閱定價頁面。

  • 如果 Snowflake 倉庫和 Amazon S3 值區位於不同區域,執行 Snowflake 資料移轉作業時,Snowflake 會收取輸出費用。如果 Snowflake 倉庫和 Amazon S3 值區位於同一區域,則 Snowflake 資料移轉作業不會產生輸出費用。
  • 從 AWS 移轉資料至 Cloud de Confiance時,須支付跨雲端輸出費用。

後續步驟