具體化檢視表簡介
materialized view 是預先運算的檢視畫面,會定期儲存 SQL 查詢的結果。具體化檢視表可儲存查詢結果,減少每個查詢掃描的資料量,進而降低與查詢相關的總處理時間和費用。BigQuery 會在背景運算更新,驗證具體化檢視表是否提供最新資料。這項程序會逐漸執行,只使用基本資料表中的變更資料,並遵循多項考量。您可以直接查詢物化檢視表,也可以讓 BigQuery 使用物化檢視表,以便針對基礎資料表進行最佳化查詢。
具象化檢視畫面的主要特徵包括:
- 免維護。當基礎資料表變更時,系統會在背景中預先運算具體化檢視表。任何來自基礎資料表的增量資料變更都會自動新增至具體化檢視畫面,使用者不必採取任何行動。
- 最新資料:具體化檢視表會傳回最新資料。如果基本資料表的變更可能導致具象化檢視無效,系統會直接從基本資料表讀取資料。如果對基本資料表的變更不會使物化檢視畫面失效,則系統會從物化檢視畫面讀取其餘資料,並只從基本資料表讀取變更。
- 智慧調整。如果對基本資料表的查詢中,任何部分都能透過查詢具體化檢視表來解決,BigQuery 就會重新導向查詢,以便使用具體化檢視表,提高效能和效率。
用途
具象化檢視畫面可針對計算成本高且資料集結果較小的查詢進行最佳化。可從實體化檢視畫面中受益的程序包括線上分析處理 (OLAP) 作業,這些作業需要大量處理可預測且重複的查詢,例如擷取、轉換、載入 (ETL) 程序或商業智慧 (BI) 管道中的查詢。
下列用途說明瞭資料視圖的價值。如果您經常需要以下功能,Materialized View 可提高查詢效能:
- 預先匯總的資料。匯總串流資料。
- 預先篩選資料。執行只讀取資料表特定子集的查詢。
- 彙整前資料。查詢彙整作業,尤其是大型和小型資料表之間的彙整作業。
- 重新分群資料。執行可從與基礎資料表不同的叢集配置中受益的查詢。
智慧微調
您可以使用具體化檢視表,在不修改查詢的情況下,透明地改善查詢效能。您可以使用具體化檢視表,針對採用常見模式的查詢 (例如 BI 工具產生的查詢) 進行最佳化。詳情請參閱「使用具象化檢視表」。
與其他 BigQuery 技術的比較
下表概要說明 BigQuery 快取、排程查詢、邏輯檢視表和具體化檢視表之間的相似之處和差異。
元件 | 快取 | 已排定的查詢 | 邏輯檢視表 | 具體化檢視表 |
---|---|---|---|---|
最佳化運算 | 是 | 否 | 否 | 是 |
查詢支援 | 全部 | 全部 | 全部 | 受限1 |
分區與分群 | 否 | 是 | 不適用 | 是 |
增量重新整理 | 否 | 否 | 否 | 是 |
額外儲存空間 | 否 | 是 | 否 | 是 |
查詢重寫 | 否 | 否 | 否 | 是 |
維護成本 | 否 | 是 | 不適用 | 是 |
資料過時 | 永不 | 是 | 永不 | 選用 2 |
1「--allow_non_incremental_definition
」選項支援更多 SQL 查詢,可用於建立具體化檢視表。
2 處理大型資料集時,--max_staleness
選項可提供持續高效能,並控制成本。
已授權的具體化檢視表
您可以建立授權的具象化檢視表,將來源資料集的部分資料分享至次要資料集的檢視表。接著,您可以將這個檢視畫面分享給特定使用者和群組 (主要使用者),讓他們查看您分享的資料。管理員可以查詢您在檢視畫面中提供的資料,但無法直接存取來源資料集。
授權檢視表和授權的物化檢視表會以相同方式授權。詳情請參閱「授權檢視表」。
與其他 BigQuery 功能互動
下列 BigQuery 功能可與物化檢視表搭配使用:
查詢計畫說明:查詢計畫會反映要掃描的具體化檢視表 (如有),並顯示從具體化檢視表和基本資料表總共讀取多少位元組。
查詢快取:BigQuery 使用具體化檢視表重寫的查詢結果,可根據一般限制進行快取 (使用確定性函式、不將串流傳送至基礎表格等)。
費用限制:如果您已設定計費位元組上限,而查詢讀取的位元組數超過上限,則查詢會失敗 (不會產生費用),無論查詢是否使用了具體化檢視畫面、基礎資料表或兩者皆是。
使用模擬測試來估算費用:模擬測試會使用可用的物化檢視畫面重複查詢重寫邏輯,並提供費用預估值。您可以使用這項功能,測試特定查詢是否使用任何物化檢視畫面。
啟用 BigLake 中繼資料快取的資料表
針對 啟用 BigLake 中繼資料快取的資料表建立的具體化檢視表,可參照儲存在 Cloud Storage 和 Amazon Simple Storage Service (Amazon S3) 中的結構化資料。這些具體化檢視表的運作方式與 BigQuery 代管儲存空間資料表的具體化檢視表相同,包括自動重新整理和智慧調整的優點。其他優點包括可針對儲存在 BigQuery 外部的資料,預先匯總、預先篩選及預先彙整資料。在 BigLake 資料表上建立的具體化檢視表會儲存在 BigQuery 代管儲存空間中,並具有該儲存空間的所有特性。
在 Amazon S3 BigLake 資料表上建立具體化檢視表時,具體化檢視表中的資料無法與 BigQuery 資料彙整。如要讓物化檢視中的 Amazon S3 資料可用於彙整,請建立物化檢視的副本。您只能在授權的具體化檢視表上建立具體化檢視表副本。
具體化檢視表備用資源
您可以使用 BigQuery 在支援快取的 BigLake 中繼資料資料表上建立具體化檢視表,並透過 Amazon Simple Storage Service (Amazon S3)、Apache Iceberg 或 Salesforce Data Cloud 資料。
實體檢視副本可讓您在查詢中使用 Amazon S3、Iceberg 或 Data Cloud 實體檢視資料,同時避免資料傳出成本並提升查詢效能。唯物化檢視畫面副本會將 Amazon S3、Iceberg 或 Data Cloud 資料複製到支援的 BigQuery 區域資料集,以便在 BigQuery 中使用本機資料。
瞭解如何建立具象化檢視畫面副本。
資料更新間隔
建立 materialized view 備用資源後,備用資源程序會輪詢來源 materialized view 是否有變更,並將資料複製到 materialized view 備用資源。資料會按照您在 CREATE MATERIALIZED VIEW AS REPLICA OF
陳述式的 replication_interval_seconds
選項中指定的間隔複製。
除了複製間隔外,影響資料視圖備用資源資料新鮮度的因素還包括來源資料視圖的重新整理頻率,以及資料視圖使用的 Amazon S3、Iceberg 或 Data Cloud 資料表中繼資料快取的重新整理頻率。
您可以使用 Google Cloud 控制台,查看資料已更新的 materialized view 備用資源和相關資源:
- 如要查看具體化檢視表備援資料的最新狀態,請在具體化檢視表備援資料的「Details」窗格中查看「Last modified」欄位。
- 如要瞭解來源資料轉換視圖的時效,請查看資料轉換視圖的「Details」窗格中的「Last modified」欄位。
- 如要查看來源 Amazon S3、Iceberg 或 Data Cloud 資料表中繼資料的更新間隔,請在具體化檢視表的「Details」窗格中查看「Max staleness」欄位。
支援的地區
建立已具象化檢視畫面副本時,請使用下表中的位置對應:
來源 Materialized View 的位置 | 具體化檢視表備用資源的位置 |
---|---|
aws-us-east-1 |
US
多區域,或下列任一區域:
|
aws-us-west-2 |
US
多區域,或下列任一區域:
|
aws-eu-west-1 |
EU
多區域,或下列任一區域:
|
aws-ap-northeast-2 |
以下任一地區:
|
aws-ap-southeast-2 |
以下任一地區:
|
限制
- 可能會對基本資料表參照和其他限制設下限制。如要進一步瞭解具象化檢視區塊限制,請參閱「配額與限制」。
- 您無法直接使用
COPY
、EXPORT
、LOAD
、WRITE
或資料操縱語言 (DML) 陳述式等作業更新或操縱具體化檢視表的資料。 - 您無法使用同名的具體化檢視表取代現有的具體化檢視表。
- 建立了物化檢視表後,就無法更新檢視表 SQL。
- 唯有與基礎資料表位於相同機構的實體資料檢視,或位於同一專案 (如果專案不屬於機構),才能使用實體資料檢視。
- 具體化檢視表使用受限的 SQL 語法和一組有限的匯總函式。詳情請參閱「支援的物化檢視畫面」。
- 具體化檢視表無法巢狀在其他具體化檢視表上。
- 物化檢視表無法查詢外部或萬用字元資料表、邏輯檢視表1或快照。
- 具體化檢視表僅支援 GoogleSQL 方言。
- 您可以為具象化檢視畫面設定說明,但無法為具象化檢視畫面中的個別資料欄設定說明。
- 如果您先刪除基礎資料表,而未先刪除具象化檢視圖表,則具象化檢視圖表的查詢和重新整理作業會失敗。如果您重新建立基礎資料表,也必須重新建立已實作的檢視畫面。
- 如果已實作的檢視畫面含有啟用資料變更擷取功能的基礎資料表,則該資料表就無法在同一項查詢中與已實作的檢視畫面一併參照。
1邏輯檢視畫面參照支援功能處於預先發布版階段。詳情請參閱「參考邏輯檢視畫面」一文。
BigLake 資料表的具體化檢視表限制
- 系統不支援具體化檢視表的分區作業。基礎資料表可以使用 Hive 分區,但具體化檢視儲存空間無法在 BigLake 資料表中分區。也就是說,任何基礎資料表中的刪除作業都會導致具體化資料檢視的完整重新整理。詳情請參閱「增量更新」。
- 已實體化的檢視畫面
-max_staleness
選項的值必須大於 BigLake 基礎資料表的值。 - 單一具體化檢視定義不支援 BigQuery 管理資料表和 BigLake 資料表之間的彙整作業。
- BigQuery BI Engine 不支援在 BigLake 資料表上加速具體化檢視表。
具體化檢視表備用資源的限制
- 您無法為以資料列層級安全防護機制或資料欄層級安全防護機制為基礎的任何資料表,建立 materialized view 副本。
- 您無法將客戶自行管理的加密金鑰 (CMEK)與來源具象化檢視畫面或具象化檢視畫面副本搭配使用。
- 您只能為以中繼資料快取為依據的任何資料表建立 materialized view 副本。
- 您只能為特定來源具體化檢視表建立一個具體化檢視表備用資源。
- 您只能為已授權的具體化檢視表建立具體化檢視表複本。
具體化檢視表定價
費用與具體化檢視表的下列部分相關:
- 查詢具體化檢視表。
- 維護具體化檢視表,例如在具體化檢視表重新整理時。自動重新整理的費用會計入檢視畫面所在的專案。手動重新整理的費用會計入執行手動重新整理工作的專案。如要進一步瞭解如何控制維護成本,請參閱「刷新工作維護」。
- 儲存具體化檢視表。
元件 | 以量計價 | 以容量為基礎的定價 |
---|---|---|
查詢 | 由物化檢視圖和基本資料表的任何必要部分處理的位元組數1。 | 在查詢期間會消耗運算單元。 |
維護 | 在重新整理期間處理的位元組數。 | 在重新整理期間會消耗運算單元。 |
儲存空間 | 儲存在具體化檢視表中的位元組數。 | 儲存在具體化檢視表中的位元組數。 |
1在可行情況下,BigQuery 只會讀取上次刷新檢視畫面後的變更。詳情請參閱「增量更新」。
儲存空間費用詳細資料
對於物化檢視畫面中的 AVG
、ARRAY_AGG
和 APPROX_COUNT_DISTINCT
匯總值,系統不會直接儲存最終值。相反地,BigQuery 會在內部將具體化檢視表儲存為中繼草圖,用於產生最終值。
舉例來說,請考慮使用下列指令建立的具象化檢視畫面:
CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS SELECT date, AVG(net_paid) AS avg_paid FROM project-id.my_dataset.my_base_table GROUP BY date
雖然 avg_paid
欄會以 NUMERIC
或 FLOAT64
的形式顯示給使用者,但在內部,它會儲存為 BYTES
,其內容為專屬格式的中繼草圖。資料大小計算時,系統會將該欄視為 BYTES
。
具體化檢視表備用資源費用
使用具體化檢視畫面複本會產生運算、傳出資料傳輸和儲存空間費用。