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。如果未指定,则使用默认项目。

    例如:

    -- 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   |
      +---------------+------------------------------------------------+