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。如果未指定,则使用默认项目。
例如:
-- 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
(该列留待将来使用)以外的所有列。系统会返回默认项目 myproject
中 mydataset
的所有视图的元数据。
如需对非默认项目运行查询,请按 `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:
以下示例检索用于在默认项目 myproject
的 mydataset
数据集中定义 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 查询创建的。