VIEWS 视图

INFORMATION_SCHEMA.VIEWS 视图包含有关视图的元数据。

所需权限

要获取视图元数据,您需要以下 Identity and Access Management (IAM) 权限:

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

以下每个预定义的 IAM 角色都包含获取视图元数据所需的权限:

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer

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

架构

当您查询 INFORMATION_SCHEMA.VIEWS 视图时,数据集中的每个视图都会有一行对应的查询结果。

INFORMATION_SCHEMA.VIEWS 视图具有如下架构:

列名 数据类型
TABLE_CATALOG STRING 包含数据集的项目的名称
TABLE_SCHEMA STRING 包含视图的数据集的名称(也称为数据集 id
TABLE_NAME STRING 视图的名称(也称为表 id
VIEW_DEFINITION STRING 定义视图的 SQL 查询
CHECK_OPTION STRING 返回的值始终为 NULL
USE_STANDARD_SQL STRING 如果视图是使用 GoogleSQL 查询创建的,则为 YES;如果 useLegacySql 设置为 true,则为 NO

范围和语法

针对此视图的查询必须包含数据集或区域限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:

视图名称 资源范围 区域范围
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.VIEWS 项目级 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.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.VIEWS;

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

示例

示例 1:

以下示例从 INFORMATION_SCHEMA.VIEWS 视图中检索 check_option(该列留待将来使用)以外的所有列。系统会返回默认项目 myprojectmydataset 的所有视图的元数据。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

SELECT
  * EXCEPT (check_option)
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS;

结果类似于以下内容:

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

请注意,结果显示此视图是使用旧版 SQL 查询创建的。

示例 2:

以下示例检索用于在默认项目 myprojectmydataset 数据集中定义 myview 视图的 SQL 查询和查询语法。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

SELECT
  table_name, view_definition, use_standard_sql
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS
WHERE
  table_name = 'myview';

结果类似于以下内容:

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

请注意,结果显示此视图是使用 GoogleSQL 查询创建的。