MATERIALIZED_VIEWS 檢視表

INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視畫面包含具體化檢視表的狀態。

所需權限

如要取得查詢 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視畫面所需的權限,請要求管理員為您的專案或資料集授予 BigQuery 中繼資料檢視者 (roles/bigquery.metadataViewer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含查詢 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視畫面所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

您必須具備下列權限,才能查詢 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視畫面:

  • bigquery.tables.get
  • bigquery.tables.list

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」。

結構定義

查詢 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視表時,資料集中的每個具象化檢視表都會有一列相對應的查詢結果。

INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視表具有下列結構定義:

資料欄名稱 資料類型
TABLE_CATALOG STRING 包含資料集的專案名稱。也稱為 projectId
TABLE_SCHEMA STRING 包含物化檢視表的資料集名稱。也稱為 datasetId
TABLE_NAME STRING materialized view 的名稱。也稱為 tableId
LAST_REFRESH_TIME TIMESTAMP 上次更新此已具象化檢視畫面的時間。
REFRESH_WATERMARK TIMESTAMP 具體化檢視表的重新整理浮水印。此時,物化檢視區塊資料表中包含的資料會納入物化檢視快取。
LAST_REFRESH_STATUS RECORD 上次自動重新整理作業的錯誤結果,以 ErrorProto 物件表示。如果存在,表示上次自動重新整理作業失敗。

範圍和語法

對這個檢視表執行的查詢必須包含資料集或區域限定詞。如果查詢含有資料集限定條件,您必須具備該資料集的權限。如果查詢包含區域限定條件,您必須具備專案權限。詳情請參閱「語法」。下表說明這個檢視畫面的區域和資源範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS 專案層級 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS 資料集層級 資料集位置
替換下列內容:
  • 選用:PROJECT_ID: Google Cloud 專案的 ID。如果未指定,系統會使用預設專案。
  • REGION:任一資料集區域名稱。例如:`region-us`
  • DATASET_ID:資料集 ID。詳情請參閱「資料集限定條件」。

例如:

-- Returns metadata for views in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

範例

範例 1:

以下範例會從 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 檢視表擷取所有不健康的具象化檢視畫面。它會傳回預設專案 (myproject) 中 mydataset 中具有非 NULL last_refresh_status 值的具象化檢視畫面。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;例如 `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS

SELECT
  table_name, last_refresh_status
FROM
  mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
WHERE
  last_refresh_status IS NOT NULL;

結果大致如下:

  +---------------+---------------------------------------------------------------------+
  |  table_name   |                        last_refresh_status                          |
  +---------------------------------------------------------------------+---------------+
  |  myview       |   {"reason":"invalidQuery","location":"query","message":"..."}      |
  +---------------------------------------------------------------------+---------------+
  

範例 2:

以下範例會擷取預設專案 myprojectmydataset 中具現檢視圖 myviewlast_refresh_timerefresh_watermark。結果會顯示上次更新具體化資料的時間,以及基礎資料表的資料收集至具體化檢視表快取的時間。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;例如 `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS

SELECT
  table_name, last_refresh_time, refresh_watermark
FROM
  mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
WHERE
  table_name = 'myview';

結果大致如下:

  +---------------+------------------------------------------------+
  |  table_name   |  last_refresh_time     | refresh_watermark     |
  +---------------+------------------------------------------------+
  |  myview       | 2023-02-22 19:37:17    | 2023-03-08 16:52:57   |
  +---------------+------------------------------------------------+