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 的方式。

寫入偏好設定有兩種:增量轉移截斷轉移

增量轉移

如果移轉設定採用 APPENDWRITE_APPEND 寫入偏好設定 (也稱為增量移轉),系統會將上次成功移轉後的新資料,以增量方式附加至 BigQuery 目的地資料表。如果移轉設定以 APPEND 寫入偏好設定執行,BigQuery 資料移轉服務會篩選出上次成功執行移轉作業後修改的檔案。為判斷檔案的修改時間,BigQuery 資料移轉服務會查看檔案中繼資料的「上次修改時間」屬性。舉例來說,BigQuery 資料移轉服務會查看 Cloud Storage 檔案中的 updated 時間戳記屬性。如果 BigQuery 資料移轉服務發現任何檔案的「上次修改時間」晚於上次成功移轉的時間戳記,就會以增量移轉方式移轉這些檔案。

為示範增量轉移的運作方式,請參考下列 Cloud Storage 轉移範例。使用者在 2023 年 7 月 1 日 00:00 (UTC) 於 Cloud Storage 值區中建立名為 file_1 的檔案。file_1updated時間戳記是檔案的建立時間。使用者接著從 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_2updated時間戳記是檔案的建立時間。

  • 下一次轉移作業 (2023-07-03T03:00Z) 會偵測到 file_2updated 時間戳記大於上次成功轉移作業 (2023-07-01T03:00Z)。假設移轉作業開始時,因暫時性錯誤而失敗。在此情況下,file_2 不會載入至目的地 BigQuery 資料表。上次成功執行的轉移作業時間戳記仍為 2023-07-01T03:00Z。
  • 下一次轉移作業 (2023-07-04T03:00Z) 會偵測到 file_2updated 時間戳記大於上次成功轉移作業 (2023-07-01T03:00Z)。這次移轉作業順利完成,因此 file_2 成功載入目的地 BigQuery 資料表。
  • 下一次的轉移作業 (2023-07-05T03:00Z) 未偵測到任何檔案,且 updated 時間戳記大於上次成功轉移作業 (2023-07-04T03:00Z)。移轉作業會成功完成,但不會將任何額外資料載入目的地 BigQuery 資料表。

上例顯示,如果移轉失敗,系統不會將任何檔案移轉至 BigQuery 目的地資料表。下次成功傳輸時,系統會傳輸所有檔案變更。如果轉移失敗,後續成功轉移的資料不會重複。如果移轉失敗,您也可以選擇在定期排定時間以外手動觸發移轉

截斷的轉移作業

如果移轉設定的寫入偏好設定為 MIRRORWRITE_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 資源路徑,請按照下列步驟操作:

  1. 開啟 Cloud Storage 主控台。

    Cloud Storage 主控台

  2. 瀏覽至含有來源資料的物件 (檔案) 位置。

  3. 按一下物件名稱。

    「物件詳細資料」頁面隨即開啟。

  4. 複製「gsutil URI」欄位中提供的值,開頭為 gs://

Cloud Storage 資源路徑的萬用字元支援

如果您的 Cloud Storage 資料分成多個共用通用基礎名稱的檔案,那麼當您載入資料時,可以在資源路徑中使用萬用字元。

如要新增萬用字元至 Cloud Storage 資源路徑,請為基礎名稱加上星號 (*)。舉例來說,如果您有兩個名為 fed-sample000001.csvfed-sample000002.csv 的檔案,則資源路徑會是 gs://mybucket/fed-sample*。然後這個萬用字元就可以在Cloud de Confiance 控制台或 Google Cloud CLI 中使用。

對於值區內的物件 (檔案名稱),您可以使用多個萬用字元。萬用字元可以出現在物件名稱內的任何位置。

萬用字元不會展開 gs://bucket/ 中的目錄。舉例來說,gs://bucket/dir/* 會在 dir 目錄中尋找檔案,但不會在 gs://bucket/dir/subdir/ 子目錄中尋找檔案。

您也無法比對沒有萬用字元的前置字元。舉例來說,gs://bucket/dir 不符合 gs://bucket/dir/file.csvgs://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 資料移轉服務會使用載入工作,將 Cloud Storage 資料載入至 BigQuery。

所有 BigQuery 對載入工作的配額與限制均適用於週期性 Cloud Storage 載入工作,但須注意下列事項:

限制
每個載入工作傳輸作業的大小上限 15 TB
每次傳輸作業的檔案數量上限 10,000 個檔案

後續步驟