MATERIALIZED_VIEWS 视图

INFORMATION_SCHEMA.MATERIALIZED_VIEWS 视图包含具体化视图的状态。

所需权限

如需获得查询 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 视图所需的权限,请让管理员向您授予项目或数据集的 BigQuery Metadata Viewer (roles/bigquery.metadataViewer) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含查询 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 视图所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

查询 INFORMATION_SCHEMA.MATERIALIZED_VIEWS 视图需要以下权限:

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

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制

架构

当您查询 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 视图中检索所有健康状况不佳的具体化视图。它会返回默认项目 myprojectmydataset 中具有非 NULL last_refresh_status 值的具体化视图。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS 格式将相应的项目 ID 添加到数据集,例如 `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。结果会显示具体化视图上一次刷新的时间,以及基表数据的收集到具体化视图缓存的最新时间点。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS 格式将相应的项目 ID 添加到数据集,例如 `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   |
  +---------------+------------------------------------------------+