MATERIALIZED_VIEWS 檢視區塊

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

所需權限

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

這個預先定義的角色具備查詢 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 具體化檢視區塊的名稱。也稱為「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:

下列範例會擷取預設專案 (myproject) 中 mydataset 內具體化檢視區塊 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   |
  +---------------+------------------------------------------------+