外部資料表簡介
本文件說明如何在外部資料表中使用儲存在 BigQuery 外部的資料。如要使用外部資料來源,您也可以使用外部資料集。
非 BigLake 外部資料表可讓您查詢外部資料儲存庫中的結構化資料。如要查詢非 BigLake 外部資料表,您必須具備外部資料表和外部資料來源的權限。舉例來說,如要查詢使用 Cloud Storage 資料來源的非 BigLake 外部資料表,您必須具備下列權限:
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
支援的資料儲存庫
您可以將非 BigLake 外部資料表與下列資料儲存庫搭配使用:
支援臨時資料表
您可以在 BigQuery 中使用永久資料表或臨時資料表查詢外部資料來源。永久資料表是在資料集中建立並連結至外部資料來源的資料表。由於資料表為永久性,因此您可以使用存取權控管,將資料表分享給其他同樣具備基礎外部資料來源存取權的使用者,而且您可以隨時查詢此資料表。
使用臨時資料表查詢外部資料來源時,您必須提交內含查詢的指令,並建立連結至外部資料來源的非永久資料表。使用臨時資料表時,不用在 BigQuery 資料集內建立資料表。因為資料表不會永久儲存在資料集中,所以無法與其他使用者分享。使用臨時資料表查詢外部資料來源,對於臨時的一次性外部資料查詢作業,或對擷取、轉換和載入 (ETL) 程序而言非常有用。
多個來源檔案
如果您建立的是基於 Cloud Storage 的非 BigLake 外部資料表,則可以使用多個外部資料來源,前提是這些資料來源必須具有相同的結構定義。這項功能不支援以 Bigtable 或 Google 雲端硬碟為基礎的非 BigLake 外部資料表。
限制
外部資料表有下列限制:
- BigQuery 不保證外部資料表的資料一致性。如果基礎資料在查詢執行期間遭到變更,可能會導致非預期的行為。
- 與在標準 BigQuery 資料表中查詢資料相比,外部資料表的查詢效能可能較慢。如果以查詢速度為優先要務,請將資料載入 BigQuery,而不要設定外部資料來源。就含有外部資料表的查詢而言,效能取決於外部儲存空間類型。舉例來說,查詢儲存在 Cloud Storage 中的資料會比查詢 Google 雲端硬碟中的資料快。一般來說,外部資料表的查詢效能應與直接從資料來源讀取資料的效能相同。
- 您無法使用 DML 或其他方法修改外部資料表。外部資料表對 BigQuery 而言是唯讀。
- 您無法使用
TableDataList
JSON API 方法從外部資料表擷取資料。詳情請參閱tabledata.list
。如要解決這項限制,您可以將查詢結果儲存在目標資料表中。然後,對結果資料表使用TableDataList
方法。 - 您無法執行從外部資料表匯出資料的 BigQuery 工作。如要解決這項限制,您可以將查詢結果儲存在目標資料表中。然後,對結果資料表執行匯出工作。
- 您無法複製外部資料表。
- 您無法在萬用字元資料表查詢中參照外部資料表。
- 外部資料表不支援叢集功能。這類資料庫支援有限的分區方式。詳情請參閱「查詢外部分區資料」。
- 查詢 Cloud Storage 以外的外部資料來源時,系統不會將結果快取。(支援 Cloud Storage 上的 GoogleSQL 查詢)。 每次查詢外部資料表,系統均會向您收費,即使您是發出多次相同的查詢也一樣。如果您需要對不常變更的外部資料表重複發出查詢,請考慮將查詢結果寫入永久性資料表,然後改對永久性資料表執行查詢。
- 您最多只能對 Bigtable 外部資料來源執行 16 個並行查詢。
- 使用外部資料表的聯合查詢模擬執行可能會回報資料的下限為 0 位元組,即使傳回資料列也一樣。這是因為系統必須等到實際查詢完成後,才能判斷從外部資料表處理的資料量。執行聯合查詢時,系統會產生處理這類資料的費用。
- 您無法在外部資料表中使用
_object_metadata
做為資料欄名稱。這是保留供內部使用的名稱。 - BigQuery 不支援顯示外部資料表的資料表儲存空間統計資料。
- 外部資料表不支援靈活的資料欄名稱。
- BI Engine 不支援對外部資料表執行查詢。
- BigQuery 不支援 Spanner 資料提升功能,無法從 BigQuery 讀取 Bigtable 資料。
- BigQuery 不支援外部資料表的時間旅行或安全防護資料保留期間。
- 適用所有格式專屬限制:
位置注意事項
選擇外部資料表的儲存位置時,請同時考量 BigQuery 資料集和外部資料來源的儲存位置。
Cloud Storage
使用 BigLake 或非 BigLake 外部資料表查詢 Cloud Storage 中的資料時,值區必須與包含外部資料表定義的 BigQuery 資料集位於同一位置。例如:
-
如果 Cloud Storage 值區位於
us-central1
(Iowa) 區域,則 BigQuery 資料集必須位於us-central1
(Iowa) 區域或US
多地區值區。如果您的 Cloud Storage 值區位於
europe-west4
(荷蘭) 地區,則 BigQuery 資料集必須位於europe-west4
(荷蘭) 或EU
多地區。如果 Cloud Storage 值區位於
europe-west1
(比利時) 地區,則對應的 BigQuery 資料集也必須位於europe-west1
(比利時) 地區。 -
如果您的 Cloud Storage 值區位於
NAM4
預先定義的雙地區,或是任何包含us-central1
(愛荷華州) 區域的可設定雙地區,則對應的 BigQuery 資料集必須位於us-central1
(愛荷華州) 區域或US
多地區。如果 Cloud Storage 值區位於
EUR4
預先定義的雙地區,或是任何包含europe-west4
(荷蘭) 地區的可設定雙地區,則對應的 BigQuery 資料集必須位於europe-west4
(荷蘭) 地區或EU
多地區。如果您的 Cloud Storage 值區位於
ASIA1
預先定義的雙地區,則對應的 BigQuery 資料集必須位於asia-northeast1
(東京) 或asia-northeast2
(大阪) 地區。如果您的 Cloud Storage 值區使用可設定的雙區域,其中包含
australia-southeast1
(雪梨) 和australia-southeast2
(墨爾本) 區域,則對應的 BigQuery 值區必須位於australia-southeast1
(雪梨) 或australia-southeast2
(墨爾本) 區域。 -
對於外部資料表,不建議使用多區域資料集位置和多區域 Cloud Storage 值區,因為外部查詢效能取決於最短的延遲時間和最佳的網路頻寬。
如果您的 BigQuery 資料集位於
US
多地區,則對應的 Cloud Storage 值區必須位於US
多地區、包含us-central1
(愛荷華州) 的雙地區 (例如NAM4
雙地區),或是包含us-central1
的可設定雙地區。如果您的 BigQuery 資料集位於
EU
多地區,則對應的 Cloud Storage 值區必須位於EU
多地區、包含europe-west4
(荷蘭) 的雙地區 (例如EUR4
雙地區),或是包含europe-west4
的可設定雙地區。
如要進一步瞭解支援的 Cloud Storage 位置,請參閱 Cloud Storage 說明文件中的「值區位置」一文。
Bigtable
透過 BigQuery 外部資料表查詢 Bigtable 中的資料時,Bigtable 執行個體必須與 BigQuery 資料集位於相同位置:
- 單一地區:如果您的 BigQuery 資料集位於比利時 (
europe-west1
) 地區位置,則對應的 Bigtable 執行個體必須位於比利時地區。 - 多區域:由於外部查詢效能取決於最短的延遲時間和最佳網路頻寬,因此不建議在 Bigtable 的外部資料表中使用多區域資料集位置。
如要進一步瞭解支援的 Bigtable 位置,請參閱「Bigtable 位置」。
Google 雲端硬碟
上述的位置注意事項不適用於 Google 雲端硬碟外部資料來源。
在不同位置之間移動資料
如要手動將資料集移至其他位置,請按照下列步驟操作:
-
將 BigQuery 資料表中的資料匯出至 Cloud Storage 值區。
從 BigQuery 中匯出資料並不需要付費,但是在 Cloud Storage 儲存匯出的資料則會產生費用。BigQuery 匯出作業會受到匯出工作的相關限制。
-
從匯出 Cloud Storage 值區中複製或移動資料,然後匯出至您在目的地位置建立的新值區。舉例來說,如果您要將資料從
US
多地區位置移到asia-northeast1
東京地區,則必須將資料移轉到您在東京建立的值區。如要瞭解如何轉移 Cloud Storage 物件,請參閱 Cloud Storage 說明文件中的「複製、重新命名及移動物件」一文。在不同地區之間轉移資料將導致 Cloud Storage 產生網路輸出費用。
-
在新位置建立新的 BigQuery 資料集,然後將資料從 Cloud Storage 值區載入新資料集。
將資料載入 BigQuery 無須支付費用,但將資料儲存於 Cloud Storage 則須支付費用,直到您刪除資料或值區為止。載入資料之後,將資料儲存至 BigQuery 亦須支付相關費用。將資料載入 BigQuery 時會受到載入工作限制。
您也可以使用 Cloud Composer,透過程式碼移動及複製大型資料集。
如要進一步瞭解如何使用 Cloud Storage 儲存及移動大型資料集,請參閱「搭配大數據使用 Cloud Storage」。
定價
從 BigQuery 查詢外部表格時,如果使用 BigQuery 以量計價 (每 TiB) 價格,系統會針對執行查詢作業和讀取的適用位元組收費;如果使用 BigQuery 容量 (每運算單元小時) 價格,則會針對運算單元用量收費。
如果資料是以 ORC 或 Parquet 格式儲存在 Cloud Storage 上,請參閱資料大小計算一節。
系統也會依據應用程式的價格規定,針對來源應用程式所儲存的資料和使用的任何資源,向您收費:
- 如要進一步瞭解 Cloud Storage 價格,請參閱 Cloud Storage 定價一文。
- 如要進一步瞭解 Bigtable 價格,請參閱「定價」一文。
- 如要進一步瞭解 Google 雲端硬碟價格,請參閱「定價」一文。
後續步驟
- 瞭解如何建立 Bigtable 外部資料表。
- 瞭解如何建立 Cloud Storage 外部資料表。
- 瞭解如何建立雲端硬碟外部資料表。
- 瞭解如何使用 Dataplex Universal Catalog 排定及執行資料品質檢查。