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-07-01T00:00Z 時間點在 Cloud Storage 值區中建立名為 file_1 的檔案。file_1updated 時間戳記是檔案建立的時間。接著,使用者會從 Cloud Storage 儲存桶建立漸進式移轉作業,並排定在 2023-07-01T03:00Z 起,每天 03:00Z 執行一次。

  • 在 2023-07-01T03:00Z,第一個轉移作業就會開始。由於這是此設定的首次移轉作業,BigQuery 資料移轉服務會嘗試將與來源 URI 相符的所有檔案載入目標 BigQuery 資料表。移轉作業執行成功,BigQuery 資料移轉服務已成功將 file_1 載入至目的地 BigQuery 資料表。
  • 在 2023-07-02T03:00Z 執行下一次轉移作業時,系統不會偵測到 updated 時間戳記屬性大於上次成功執行轉移作業 (2023-07-01T03:00Z) 的檔案。移轉作業執行成功,但未將任何其他資料載入目標 BigQuery 資料表。

上例說明 BigQuery 資料移轉服務如何查看來源檔案的 updated 時間戳記屬性,判斷來源檔案是否有任何變更,並在偵測到變更時進行轉移。

同樣以上述範例為例,假設使用者在 2023-07-03T00:00Z 時,在 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 值區的名稱為 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. 按一下物件的名稱。

    「Object details」頁面隨即開啟。

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

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

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

如要將萬用字元新增至 Cloud Storage 資源路徑,請為基礎名稱加上星號 (*)。例如,如果您有兩個名為 fed-sample000001.csvfed-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.csvgs://bucket/file.csv

不過,您可以在值區內的檔案名稱中使用多個萬用字元。例如,gs://bucket/dir/*/*.csv 符合 gs://bucket/dir/subdir/file.csv

如需萬用字元支援與參數化資料表名稱的範例,請參閱「移轉作業中的執行階段參數」。

位置注意事項

Cloud Storage 值區必須位於 BigQuery 中目的地資料集的地區或多地區。

  • 如果您的 BigQuery 資料集位於多地區,則含有要轉移資料的 Cloud Storage 值區必須位於相同的多地區,或是位於多地區內的某個位置。舉例來說,如果您的 BigQuery 資料集位於 EU 多區域,Cloud Storage 值區可以位於歐盟內的 europe-west1 比利時區域。
  • 如果您的資料集位於單一地區,則 Cloud Storage 值區也必須位於相同地區。舉例來說,如果您的資料集位於 asia-northeast1 東京地區,Cloud Storage 值區就不能位於 ASIA 多地區。

如要進一步瞭解移轉和地區,請參閱「資料集位置和移轉」。

如要進一步瞭解 Cloud Storage 位置,請參閱 Cloud Storage 說明文件中的「值區位置」一文。

定價

配額與限制

BigQuery 資料移轉服務會使用載入工作,將 Cloud Storage 資料載入至 BigQuery。

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

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

後續步驟