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
架构
当您查询 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
值的具体化视图。
如需对非默认项目运行查询,请按 `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:
以下示例检索默认项目 myproject
的 mydataset
中的具体化视图 myview
的 last_refresh_time
和 refresh_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 | +---------------+------------------------------------------------+