Blob 儲存體移轉作業簡介
透過 Azure Blob 儲存體專用的 BigQuery 資料移轉服務,您可以自動安排及管理從 Azure Blob 儲存體和 Azure Data Lake Storage Gen2 到 BigQuery 的週期性載入工作。
支援的檔案格式
BigQuery 資料移轉服務支援以以下格式從 Blob 儲存空間載入資料:
- 逗號分隔值 (CSV)
- JSON (以換行符號分隔)
- Avro
- Parquet
- ORC
支援的壓縮類型
Blob 儲存空間專用的 BigQuery 資料移轉服務支援載入壓縮資料。BigQuery 資料移轉服務支援的壓縮類型和 BigQuery 載入工作支援的相同。詳情請參閱載入壓縮與未壓縮資料。
轉移前須知
如要從 Blob 儲存空間資料來源載入資料,請先收集下列資訊:
- 來源資料的 Blob 儲存體帳戶名稱、容器名稱和資料路徑 (選用)。資料路徑欄位為選填,用於比對常見的物件前置字串和副檔名。如果省略資料路徑,系統會轉移容器中的所有檔案。
- Azure 共用存取簽章 (SAS) 權杖,可授予資料來源的讀取權限。如要進一步瞭解如何建立 SAS 權杖,請參閱「共用存取簽章 (SAS)」。
轉移執行階段參數化
Blob 儲存空間資料路徑和目的地資料表皆可參數化,讓您依日期順序從容器載入資料。Blob Storage 移轉作業使用的參數與 Cloud Storage 移轉作業使用的參數相同。詳情請參閱「在移轉作業中使用執行階段參數」。
Azure Blob 移轉作業資料擷取
設定 Azure Blob 移轉作業時,您可以在移轉設定中選取「寫入偏好設定」,指定資料載入 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 bucket 中建立另一個名為 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 資料移轉服務可能會重複資料。
支援 Blob 儲存體資料路徑的萬用字元
如要選取分成多個檔案的來源資料,請在資料路徑中指定一或多個星號 (*) 萬用字元。
資料路徑中可使用多個萬用字元,但如果只使用一個萬用字元,則可進行部分最佳化:
- 每次轉移作業的檔案數量上限較高。
- 萬用字元會跨越目錄界線。舉例來說,資料路徑
my-folder/*.csv會比對檔案my-folder/my-subfolder/my-file.csv。
Blob 儲存空間資料路徑範例
以下是 Blob 儲存體移轉作業的有效資料路徑範例。請注意,資料路徑開頭不是 /。
範例:單一檔案
如要將單一檔案從 Blob 儲存空間載入至 BigQuery,請指定 Blob 儲存空間檔案名稱:
my-folder/my-file.csv
範例:所有檔案
如要將 Blob 儲存空間容器中的所有檔案載入 BigQuery,請將資料路徑設為單一萬用字元:
*
範例:具有相同前置字串的檔案
如要從 Blob 儲存空間載入共用相同前置字串的所有檔案,請指定含或不含萬用字元的前置字串:
my-folder/
或
my-folder/*
範例:路徑相似的檔案
如要從 Blob 儲存體載入路徑相似的所有檔案,請指定通用前置字串和後置字串:
my-folder/*.csv
如果只使用單一萬用字元,則會跨目錄。在這個範例中,系統會選取 my-folder 中的每個 CSV 檔案,以及 my-folder 每個子資料夾中的每個 CSV 檔案。
範例:路徑結尾的萬用字元
請參考下列資料路徑:
logs/*
選取下列所有檔案:
logs/logs.csv
logs/system/logs.csv
logs/some-application/system_logs.log
logs/logs_2019_12_12.csv
範例:路徑開頭的萬用字元
請參考下列資料路徑:
*logs.csv
選取下列所有檔案:
logs.csv
system/logs.csv
some-application/logs.csv
且未選取下列任一檔案:
metadata.csv
system/users.csv
some-application/output.csv
範例:多個萬用字元
使用多個萬用字元可進一步控管檔案選取作業,但限制較嚴格。使用多個萬用字元時,每個萬用字元只會涵蓋單一子目錄。
請參考下列資料路徑:
*/*.csv
選取下列兩個檔案:
my-folder1/my-file1.csv
my-other-folder2/my-file2.csv
且未選取下列任一檔案:
my-folder1/my-subfolder/my-file3.csv
my-other-folder2/my-subfolder/my-file4.csv
共用存取簽章 (SAS)
系統會使用 Azure SAS 權杖代表您存取 Blob 儲存體資料。請按照下列步驟,為轉移作業建立 SAS 權杖:
- 建立或使用現有的 Blob 儲存體使用者,存取 Blob 儲存體容器的儲存空間帳戶。
在儲存空間帳戶層級建立 SAS 權杖。如要使用 Azure 入口網站建立 SAS 權杖,請按照下列步驟操作:
- 在「Allowed services」(允許的服務) 中,選取「Blob」(Blob)。
- 在「Allowed resource types」(允許的資源類型) 中,選取「Container」(容器) 和「Object」(物件)。
- 在「允許的權限」部分,選取「讀取」和「列出」。
- SAS 權杖的預設到期時間為 8 小時。設定適合移轉時間表的到期時間。
- 請勿在「允許的 IP 位址」欄位中指定任何 IP 位址。
- 在「允許的通訊協定」部分,選取「僅限 HTTPS」。
建立 SAS 權杖後,請記下傳回的「SAS 權杖」值。設定轉移作業時,需要用到這個值。
IP 限制
如果您使用 Azure 儲存空間防火牆限制 Azure 資源的存取權,請務必將 BigQuery 資料移轉服務工作站使用的 IP 範圍,加入允許的 IP 清單。
如要將 IP 範圍新增為 Azure 儲存體防火牆允許的 IP,請參閱「IP 限制」。
一致性考量
將檔案新增至 Blob 儲存空間容器後,BigQuery 資料移轉服務可能需要大約 5 分鐘才能提供該檔案。
控管輸出費用的最佳做法
如果目的地資料表設定有誤,Blob 儲存體移轉作業可能會失敗。設定不當的可能原因包括:
- 目的地表格不存在。
- 未定義資料表結構定義。
- 資料表結構定義與要轉移的資料不相容。
為避免產生額外的 Blob 儲存空間輸出費用,請先使用少量但具代表性的檔案子集測試轉移作業。請確保這項測試的資料大小和檔案數量都不大。
此外,請注意,資料路徑的前置字元比對會在檔案從 Blob 儲存空間轉移前進行,但萬用字元比對會在 Google Cloud內進行。如果檔案轉移至Google Cloud ,但未載入 BigQuery,這項差異可能會增加 Blob 儲存空間的輸出費用。
舉例來說,請看以下資料路徑:
folder/*/subfolder/*.csv
下列兩個檔案都會轉移至 Google Cloud,因為檔案名稱的前置字串為 folder/:
folder/any/subfolder/file1.csv
folder/file2.csv
不過,只有 folder/any/subfolder/file1.csv 檔案會載入 BigQuery,因為該檔案符合完整資料路徑。
定價
詳情請參閱 BigQuery 資料移轉服務定價。
使用這項服務也可能必須支付其他產品 (非 Google) 的使用費用。詳情請參閱 Blob Storage 定價。
配額與限制
BigQuery 資料移轉服務會使用載入工作,將 Blob 儲存體資料載入至 BigQuery。所有 BigQuery 載入工作的配額與限制均適用於週期性 Blob Storage 移轉作業,但須注意下列事項:
| 限制 | 預設 |
|---|---|
| 每個載入工作傳輸作業的大小上限 | 15 TB |
| Blob 儲存空間資料路徑包含 0 或 1 個萬用字元時,每次轉移作業的檔案數量上限 | 10,000,000 個檔案 |
| Blob 儲存空間資料路徑包含 2 個以上的萬用字元時,每次移轉作業的檔案數量上限 | 10,000 個檔案 |
後續步驟
- 進一步瞭解如何設定 Blob 儲存體轉移作業。
- 進一步瞭解移轉作業中的執行階段參數。
- 進一步瞭解 BigQuery 資料移轉服務。