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-07-01T00:00Z 時間點在 Cloud Storage 值區中建立名為 file_1
的檔案。file_1
的 updated
時間戳記是檔案建立的時間。接著,使用者會從 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_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 值區的名稱為 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 主控台。
瀏覽至含有來源資料的物件 (檔案) 位置。
按一下物件的名稱。
「Object details」頁面隨即開啟。
複製「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 值區可以位於歐盟內的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 資料移轉服務。