排定 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 帳戶傳輸資料的差異。

限制
使用 Snowflake 連接器進行資料轉移時,須遵守下列限制:
- Snowflake 連接器僅支援從單一 Snowflake 資料庫和結構定義中的資料表轉移資料。如要從具有多個 Snowflake 資料庫或結構定義的資料表轉移資料,可以分別設定每項轉移工作。
- 從 Snowflake 將資料載入 Amazon S3 值區、Azure Blob 儲存體容器或 Cloud Storage 值區的速度,取決於您為這項轉移作業選擇的 Snowflake 倉庫。
- BigQuery 會將 Snowflake 中的資料以 Parquet 檔案的形式寫入 Cloud Storage。Parquet 檔案不支援
TIMESTAMP_TZ和TIMESTAMP_LTZ資料類型。如果資料包含這些類型,您可以將資料匯出至 Amazon S3 做為 CSV 檔案,然後將 CSV 檔案匯入 BigQuery。詳情請參閱 Amazon S3 移轉作業總覽。
事前準備
設定 Snowflake 轉移作業前,請務必完成本節列出的所有步驟。以下列出所有必要步驟。
- 準備 Cloud de Confiance 專案
- 必要 BigQuery 角色
- 準備暫存 bucket
- 建立具備必要權限的 Snowflake 使用者
- 新增網路政策
- 選用:結構定義偵測和對應
- 評估 Snowflake 是否有任何不支援的資料類型
- 選用:啟用增量轉移
- 選用步驟:啟用私人連線
- 收集轉移資訊
- 如果您打算指定客戶自行管理的加密金鑰 (CMEK),請確保服務帳戶具有加密和解密權限,且您擁有使用 CMEK 時所需的 Cloud KMS 金鑰資源 ID。如要瞭解 CMEK 如何與移轉作業搭配運作,請參閱「指定移轉作業加密金鑰」。
準備 Cloud de Confiance 專案
請按照下列步驟,建立及設定 Snowflake 轉移專案: Cloud de Confiance
建立 Cloud de Confiance by S3NS 專案或選取現有專案。
確認您已完成啟用 BigQuery 資料移轉服務的一切必要動作。
建立 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。
建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Amazon S3 值區,做為外部階段。
如要允許 Amazon S3 bucket 的讀取權限, 您也必須執行下列操作:
建立專用的 Amazon IAM 使用者,並授予 AmazonS3ReadOnlyAccess 政策。
為 IAM 使用者建立 Amazon 存取金鑰組。
Azure
Azure 託管 Snowflake 帳戶的暫存 Azure Blob 儲存體容器
如果是 Azure 代管的 Snowflake 帳戶,請建立 Azure Blob 儲存體容器,暫存 Snowflake 資料,再載入 BigQuery。
- 建立 Azure 儲存體帳戶,並在其中建立儲存體容器。
- 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Azure 儲存空間容器,做為外部階段。請注意,由於我們不會使用「步驟 3:建立外部階段」,因此可以略過。
如要允許讀取 Azure 容器,請為該容器產生 SAS 權杖。
Cloud de Confiance
Cloud de Confiance代管 Snowflake 帳戶的暫存值區
如果是 Cloud de Confiance代管的 Snowflake 帳戶,請建立 Cloud Storage bucket,暫存 Snowflake 資料,再載入 BigQuery。
- 建立 Cloud Storage 值區。
- 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Cloud Storage bucket 做為外部階段。
如要允許存取暫存 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 帳戶 ID,也就是 Snowflake 帳戶網址中的前置碼。例如
ACCOUNT_IDENTIFIER.snowflakecomputing.com。 - 使用者名稱和相關聯的私密金鑰,須具備 Snowflake 資料庫的適當權限。只要具備執行資料移轉作業的必要權限即可。
- 要用於轉移作業的暫存值區 URI:
- 如果是 AWS 代管的 Snowflake 帳戶,則需要Amazon S3 bucket URI 和存取憑證。
- 如果是 Azure 託管的 Snowflake,則需要 Azure Blob 儲存體帳戶和容器。
- 如果是Cloud de Confiance代管的 Snowflake 帳戶,則必須提供 Cloud Storage 值區 URI。建議您為這個值區設定生命週期政策,避免產生不必要的費用。
- Cloud Storage 值區的 URI,您已在其中儲存從翻譯引擎取得的結構定義對應檔。
設定 Snowflake 轉移作業
選取下列選項之一:
控制台
前往 Cloud de Confiance 控制台的「資料移轉」頁面。
按一下 「建立轉移作業」。
在「來源類型」部分,從「來源」清單中選取「Snowflake 遷移」。
在「Transfer config name」(轉移設定名稱) 區段中,於「Display name」(顯示名稱) 欄位輸入移轉作業的名稱,例如
My migration。顯示名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。在「Destination settings」(目的地設定) 部分,從「Dataset」(資料集) 清單中選擇您建立的資料集。
在「Snowflake Credentials」(Snowflake 憑證) 部分,執行下列操作:
- 在「帳戶 ID」中,輸入 Snowflake 帳戶的專屬 ID,也就是機構名稱和帳戶名稱的組合。這個 ID 是 Snowflake 帳戶網址的前置字元,而非完整網址。例如:
ACCOUNT_IDENTIFIER.snowflakecomputing.com。 - 在「Username」(使用者名稱) 中,輸入 Snowflake 使用者名稱。系統會使用該使用者的憑證和授權,存取資料庫以轉移 Snowflake 資料表。建議您使用為這項轉移作業建立的使用者。
- 在「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 結構定義名稱。
- 在「帳戶 ID」中,輸入 Snowflake 帳戶的專屬 ID,也就是機構名稱和帳戶名稱的組合。這個 ID 是 Snowflake 帳戶網址的前置字元,而非完整網址。例如:
在「儲存空間設定」部分,執行下列操作:
- 在「Storage integration object name」(儲存空間整合物件名稱) 中,輸入 Snowflake 儲存空間整合物件的名稱。
- 選用:在「檔案大小上限」中,指定從 Snowflake 卸載至暫存位置的每個檔案大小上限 (以 MB 為單位)。
在「Cloud Provider」(雲端服務供應商) 部分,根據代管 Snowflake 帳戶的雲端服務供應商,選取
AWS、AZURE或GCP。AWS
- 在「Amazon S3 URI」部分,輸入將做為暫存區使用的 Amazon S3 值區的 URI。
- 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(存取密鑰) 部分,輸入存取金鑰組。
Azure
- 在「Azure storage account name」(Azure 儲存體帳戶名稱)和「The container in the Azure storage account」(Azure 儲存體帳戶中的容器),輸入要用做暫存區的 Azure Blob 儲存體帳戶和容器名稱。
- 在「SAS Token」(SAS 權杖) 部分,輸入為容器產生的 SAS 權杖。
Cloud de Confiance
- 在「GCS URI」部分,輸入將做為暫存區使用的 Cloud Storage URI。
在「服務帳戶」部分執行下列操作:
- 在「服務帳戶」中,輸入要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於移轉設定和目的地資料集建立所在的Cloud de Confiance by S3NS 專案。服務帳戶必須具備
storage.objects.list和storage.objects.get必要權限。
- 在「服務帳戶」中,輸入要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於移轉設定和目的地資料集建立所在的Cloud de Confiance by S3NS 專案。服務帳戶必須具備
在「結構定義設定」部分,執行下列操作:
- 在「Ingestion type」(擷取類型) 部分,選取「Full」(完整) 或「Incremental」(增量)。詳情請參閱「資料擷取行為」一文。
- 在「Table name patterns」(資料表名稱格式) 部分,輸入符合結構定義中資料表名稱的名稱或格式,指定要移轉的資料表。您可以使用規則運算式指定模式,例如
table1_regex;table2_regex。此格式必須遵循 Java 規則運算式語法。例如:lineitem;ordertb會比對名為lineitem和ordertb的資料表。.*會比對所有資料表。
- 選用:如要「使用 BigQuery Translation Engine 輸出」,請選取這個欄位,指定自訂的翻譯輸出路徑。
- 選用:在「翻譯輸出 GCS 路徑」中,指定 Cloud Storage 資料夾的路徑,該資料夾包含翻譯引擎的結構對應檔案。您可以將此欄位留空,讓 Snowflake 連接器自動偵測結構定義。
- 路徑應採用
translation_target_base_uri/metadata/config/db/schema/格式,且結尾必須為/。
- 路徑應採用
- 選用:在「自訂架構檔案路徑」中,指定自訂架構檔案的 Cloud Storage 路徑。
- 選用:如要將零比例的 Snowflake NUMBER 對應至 BigQuery INT64,請選取這個欄位,將 Snowflake
NUMBER(p, 0)型別對應至 BigQueryINT64。
在「網路連線」部分,執行下列操作:
- 如要使用私人網路,請在建立私人資料轉移時選取「True」。
- 如果是 PSC 服務連結,請輸入服務連結 URI (如要建立私人連線)。詳情請參閱「建立私有 Snowflake 轉移設定」。
- 如果是 Private Network Service,請輸入服務目錄的自我連結,建立私人資料移轉作業。詳情請參閱「建立私有 Snowflake 轉移設定」。
選用:在「Notification options」(通知選項) 專區,執行下列操作:
如果使用 CMEK,請在「Advanced options」(進階選項) 部分選取「Customer-managed key」(客戶管理的金鑰)。畫面隨即會列出可用的 CMEK 供您選擇。如要瞭解 CMEK 如何與 BigQuery 資料移轉服務搭配運作,請參閱指定移轉作業加密金鑰的相關說明。
按一下 [儲存]。
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 使用者驗證方法。 支援的值為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:指定要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於建立移轉設定和目的地資料集的相同 Cloud de Confiance by S3NS 專案。服務帳戶必須具備storage.objects.list和storage.objects.get必要權限。database:指定包含此資料轉移作業所用資料表的 Snowflake 資料庫名稱。schema:指定包含此資料移轉所含資料表的 Snowflake 結構定義名稱。table_name_patterns:輸入名稱或符合結構定義中資料表名稱的格式,指定要轉移的資料表。您可以使用規則運算式指定模式,例如table1_regex;table2_regex。此格式必須遵循 Java 規則運算式語法。例如,假設使用者要求系統 將文字從英文翻譯成法文lineitem;ordertb會比對名為lineitem和ordertb的資料表。.*會比對所有資料表。您也可以將這個欄位留白,用以遷移所有來自指定結構定義的資料表。
ingestion_mode:指定轉移的擷取模式。支援的值為FULL和INCREMENTAL。詳情請參閱「資料擷取行為」。translation_output_gcs_path:(選用) 指定 Cloud Storage 資料夾的路徑,該資料夾包含翻譯引擎的結構定義對應檔案。您可以將此欄位留空,讓 Snowflake 連接器自動偵測結構定義。- 路徑應採用
gs://translation_target_base_uri/metadata/config/db/schema/格式,且結尾必須為/。
- 路徑應採用
storage_integration_object_name:指定 Snowflake 儲存空間整合物件的名稱。cloud_provider:輸入AWS、AZURE或GCP,視代管 Snowflake 帳戶的雲端服務供應商而定。staging_s3_uri:輸入將做為暫存區使用的 S3 值區 URI。只有在cloud_provider為AWS時才需要。aws_access_key_id:輸入存取金鑰組。只有在cloud_provider為AWS時才需要。aws_secret_access_key:輸入存取金鑰組。只有在cloud_provider為AWS時才需要。azure_storage_account:輸入要用做暫存區的儲存空間帳戶名稱。只有在cloud_provider為AZURE時才需要。staging_azure_container:輸入Azure Blob 儲存體中的容器,做為暫存區。只有在cloud_provider為AZURE時才需要。azure_sas_token:輸入 SAS 權杖。只有在cloud_provider為AZURE時才需要。staging_gcs_uri:輸入要用做暫存區的 Cloud Storage URI。只有在cloud_provider為GCP時才需要。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選項。- 檔案越小,傳輸速度就越快,但如果檔案太小,可能會導致檔案數量過多。
- 如要提升資料表載入速度,請增加
PIPELINE和QUERY工作類型的 BigQuery 運算單元預留項目數量。 - 進行完整轉移時,請避免在目的地 BigQuery 資料表上進行叢集和分割。
- 以新增或更新模式進行增量轉移時,請考慮在主鍵欄上進行叢集和分區,以提升轉移效能。
- 不過,請避免在非主鍵資料欄上進行分區和分割,以免合併作業速度變慢。
定價
如要瞭解 BigQuery 資料移轉服務定價,請參閱定價頁面。
- 如果 Snowflake 倉庫和 Amazon S3 值區位於不同區域,執行 Snowflake 資料移轉作業時,Snowflake 會收取輸出費用。如果 Snowflake 倉庫和 Amazon S3 值區位於同一區域,則 Snowflake 資料移轉作業不會產生輸出費用。
- 從 AWS 移轉資料至 Cloud de Confiance時,須支付跨雲端輸出費用。
後續步驟
- 進一步瞭解 BigQuery 資料移轉服務。
- 使用批次 SQL 轉譯功能遷移 SQL 程式碼。