Cloud Storage 移轉簡介
Cloud Storage 專用的 BigQuery 資料移轉服務可讓您安排從 Cloud Storage 儲存空間到 BigQuery 的週期性資料載入工作。Cloud Storage 中儲存資料的路徑和目的地資料表皆可參數化,讓您依日期順序從 Cloud Storage 值區載入資料。
支援的檔案格式
BigQuery 資料移轉服務支援透過下列格式從 Cloud Storage 載入資料:
- 逗號分隔值 (CSV)
- JSON (以換行符號分隔)
- Avro
- Parquet
- ORC
支援的壓縮類型
Cloud Storage 專用的 BigQuery 資料移轉服務支援載入壓縮資料。BigQuery 資料移轉服務支援的壓縮類型和 BigQuery 載入工作支援的相同。詳情請參閱載入壓縮與未壓縮資料。
Cloud Storage 移轉的資料擷取作業
設定 Cloud Storage 移轉作業時,您可以在移轉設定中選取「寫入偏好設定」,指定資料載入 BigQuery 的方式。
寫入偏好設定有兩種:增量轉移和截斷轉移。增量轉移
如果移轉設定採用 APPEND 或 WRITE_APPEND 寫入偏好設定 (也稱為增量移轉),系統會將上次成功移轉後的新資料,以增量方式附加至 BigQuery 目的地資料表。如果移轉設定以 APPEND 寫入偏好設定執行,BigQuery 資料移轉服務會篩選出上次成功執行移轉作業後修改的檔案。為判斷檔案的修改時間,BigQuery 資料移轉服務會查看檔案中繼資料的「上次修改時間」屬性。舉例來說,BigQuery 資料移轉服務會查看 Cloud Storage 檔案中的 updated 時間戳記屬性。如果 BigQuery 資料移轉服務發現任何檔案的「上次修改時間」晚於上次成功移轉的時間戳記,就會以增量移轉方式移轉這些檔案。
為示範增量轉移的運作方式,請參考下列 Cloud Storage 轉移範例。使用者在 2023 年 7 月 1 日 00:00 (UTC) 於 Cloud Storage 值區中建立名為 file_1 的檔案。file_1 的updated時間戳記是檔案的建立時間。使用者接著從 Cloud Storage 儲存空間建立增量移轉作業,並排定從 2023 年 7 月 1 日 03:00Z 開始,每天 03:00Z 執行一次。
- 2023 年 7 月 1 日 03:00 (UTC),首次移轉作業開始執行。由於這是這項設定的首次移轉作業,BigQuery 資料移轉服務會嘗試將符合來源 URI 的所有檔案載入目的地 BigQuery 資料表。移轉作業成功執行,且 BigQuery 資料移轉服務已將 file_1載入目的地 BigQuery 資料表。
- 下一次轉移作業 (2023-07-02T03:00Z) 偵測到沒有任何檔案的 updated時間戳記屬性大於上次成功轉移作業 (2023-07-01T03:00Z)。移轉作業會順利完成,但不會將任何額外資料載入目的地 BigQuery 資料表。
上例說明 BigQuery 資料移轉服務如何查看來源檔案的 updated 時間戳記屬性,判斷來源檔案是否經過變更,並在偵測到變更時轉移這些變更。
沿用上述範例,假設使用者在 2023 年 7 月 3 日 00:00 (UTC) 於 Cloud Storage 值區中建立另一個名為 file_2 的檔案。file_2 的updated時間戳記是檔案的建立時間。
- 下一次轉移作業 (2023-07-03T03:00Z) 會偵測到 file_2的updated時間戳記大於上次成功轉移作業 (2023-07-01T03:00Z)。假設移轉作業開始時,因暫時性錯誤而失敗。在此情況下,file_2不會載入至目的地 BigQuery 資料表。上次成功執行的轉移作業時間戳記仍為 2023-07-01T03:00Z。
- 下一次轉移作業 (2023-07-04T03:00Z) 會偵測到 file_2的updated時間戳記大於上次成功轉移作業 (2023-07-01T03:00Z)。這次移轉作業順利完成,因此file_2成功載入目的地 BigQuery 資料表。
- 下一次的轉移作業 (2023-07-05T03:00Z) 未偵測到任何檔案,且 updated時間戳記大於上次成功轉移作業 (2023-07-04T03:00Z)。移轉作業會成功完成,但不會將任何額外資料載入目的地 BigQuery 資料表。
上例顯示,如果移轉失敗,系統不會將任何檔案移轉至 BigQuery 目的地資料表。下次成功傳輸時,系統會傳輸所有檔案變更。如果轉移失敗,後續成功轉移的資料不會重複。如果移轉失敗,您也可以選擇在定期排定時間以外手動觸發移轉。
截斷的轉移作業
如果移轉設定的寫入偏好設定為 MIRROR 或 WRITE_TRUNCATE,則每次執行移轉作業時,系統都會將來源 URI 中所有相符檔案的資料,覆寫到 BigQuery 目的地資料表。這類移轉作業也稱為截斷式移轉。MIRROR 會覆寫目的地資料表中的最新資料副本。如果目的地資料表使用分區修飾符,轉移作業只會覆寫指定分區中的資料。含有分區修飾符的目的地資料表格式為 my_table${run_date},例如 my_table$20230809。
一天內重複進行相同的增量或截斷移轉作業,不會導致資料重複。不過,如果您執行多項不同的移轉設定,且這些設定會影響相同的 BigQuery 目的地資料表,BigQuery 資料移轉服務可能會因此重複資料。
Cloud Storage 資源路徑
如要從 Cloud Storage 資料來源載入資料,您必須提供資料路徑。
Cloud Storage 資源路徑包含您的值區名稱和物件 (檔名)。舉例來說,如果 Cloud Storage bucket 名為 mybucket,資料檔案名為 myfile.csv,則資源路徑為 gs://mybucket/myfile.csv。
BigQuery 不支援 Cloud Storage 資源路徑在初始雙斜線後還有多個連續斜線。Cloud Storage 物件名稱可以包含多個連續的斜線 (「/」) 字元,但 BigQuery 會將多個連續斜線轉換為一個斜線。舉例來說,下列資源路徑在 Cloud Storage 中有效,但在 BigQuery 中則無效:gs://bucket/my//object//name。
如要擷取 Cloud Storage 資源路徑,請按照下列步驟操作:
- 開啟 Cloud Storage 主控台。 
- 瀏覽至含有來源資料的物件 (檔案) 位置。 
- 按一下物件名稱。 - 「物件詳細資料」頁面隨即開啟。 
- 複製「gsutil URI」欄位中提供的值,開頭為 - gs://。
Cloud Storage 資源路徑的萬用字元支援
如果您的 Cloud Storage 資料分成多個共用通用基礎名稱的檔案,那麼當您載入資料時,可以在資源路徑中使用萬用字元。
如要新增萬用字元至 Cloud Storage 資源路徑,請為基礎名稱加上星號 (*)。舉例來說,如果您有兩個名為 fed-sample000001.csv 和 fed-sample000002.csv 的檔案,則資源路徑會是 gs://mybucket/fed-sample*。然後這個萬用字元就可以在Google Cloud 控制台或 Google Cloud CLI 中使用。
對於值區內的物件 (檔案名稱),您可以使用多個萬用字元。萬用字元可以出現在物件名稱內的任何位置。
萬用字元不會展開 gs://bucket/ 中的目錄。舉例來說,gs://bucket/dir/* 會在 dir 目錄中尋找檔案,但不會在 gs://bucket/dir/subdir/ 子目錄中尋找檔案。
您也無法比對沒有萬用字元的前置字元。舉例來說,gs://bucket/dir 不符合 gs://bucket/dir/file.csv 和 gs://bucket/file.csv。
不過,您可以在值區內的檔案名稱中使用多個萬用字元。
例如,gs://bucket/dir/*/*.csv 符合 gs://bucket/dir/subdir/file.csv。
如需萬用字元支援與參數化資料表名稱搭配使用的範例,請參閱「移轉作業中的執行階段參數」。
位置注意事項
Cloud Storage 值區必須位於與 BigQuery 中目的地資料集相容的地區或多地區。
- 如果 BigQuery 資料集位於多地區,則包含要轉移資料的 Cloud Storage 值區必須位於相同多地區,或位於多地區內的位置。舉例來說,如果您的 BigQuery 資料集位於EU多區域,Cloud Storage bucket 可以位於歐盟境內的europe-west1比利時區域。
- 如果資料集位於單一地區,Cloud Storage 值區就必須位於相同地區。舉例來說,如果您的資料集位於asia-northeast1東京地區,Cloud Storage 值區就不能位於ASIA多地區。
如要進一步瞭解移轉作業和地區,請參閱「資料集位置和移轉作業」。
如要進一步瞭解 Cloud Storage 位置,請參閱 Cloud Storage 說明文件中的值區位置。
定價
- 載入工作適用標準 BigQuery 配額與限制。 
- 資料上傳至 BigQuery 後,系統「不」會自動將資料從 Cloud Storage 值區刪除,除非您在設定移轉作業時指定刪除。請參閱「設定 Cloud Storage 移轉作業」。 
- 詳情請參閱我們的轉移定價頁面。 
配額與限制
BigQuery 資料移轉服務會使用載入工作,將 Cloud Storage 資料載入至 BigQuery。
所有 BigQuery 對載入工作的配額與限制均適用於週期性 Cloud Storage 載入工作,但須注意下列事項:
| 值 | 限制 | 
|---|---|
| 每個載入工作傳輸作業的大小上限 | 15 TB | 
| 每次傳輸作業的檔案數量上限 | 10,000 個檔案 | 
後續步驟
- 瞭解如何設定 Cloud Storage 移轉作業。
- 瞭解 Cloud Storage 移轉作業中的執行階段參數。
- 進一步瞭解 BigQuery 資料移轉服務。