本文档介绍了如何在 BigQuery 中获取关于视图的信息或元数据。
您可以通过以下方式获取视图元数据:
- 使用 Cloud Console
- 使用
bq
命令行工具的bq show
命令 - 调用
tables.get
API 方法 - 使用客户端库
- 查询
INFORMATION_SCHEMA
视图(Beta 版)
所需权限
如需获取视图的相关信息,您必须至少具有 bigquery.tables.get
权限。以下预定义的 IAM 角色具有 bigquery.tables.get
权限:
bigquery.metadataViewer
bigquery.dataViewer
bigquery.dataOwner
bigquery.dataEditor
bigquery.admin
此外,如果用户具有 bigquery.datasets.create
权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner
访问权限。具备 bigquery.dataOwner
访问权限的用户可以获取数据集中视图的相关信息。
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅访问权限控制。
获取视图信息
获取视图相关信息的过程与获取表相关信息的过程相同。
如需获取有关视图的信息,请执行如下操作:
控制台
展开您的数据集。
点击视图名称。
点击详细信息。详细信息标签页显示了视图的说明、视图信息和定义视图的 SQL 查询。
bq
发出 bq show
命令。--format
标志可用于控制输出。如果您要获取非默认项目中的视图信息,请按以下格式将相应项目 ID 添加到数据集中:[PROJECT_ID]:[DATASET]
。
bq show \ --format=prettyjson \ project_id:dataset.view
其中:
- project_id 是项目 ID。
- dataset 是数据集的名称。
- view 是视图名称。
示例:
输入以下命令,显示默认项目中数据集 mydataset
内 myview
视图的相关信息。
bq show --format=prettyjson mydataset.myview
输入以下命令,显示 myotherproject
中数据集 mydataset
中 myview
视图的相关信息。
bq show --format=prettyjson myotherproject:mydataset.myview
API
调用 tables.get
方法并提供所有相关参数。
Go
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
Node.js
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档。
Python
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
INFORMATION_SCHEMA
(Beta 版)
INFORMATION_SCHEMA
是一系列视图,可让您访问数据集、例程、表、视图、作业、预留和流式数据的相关元数据。
VIEWS
视图
当您查询 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 |
如果视图是使用标准 SQL 查询创建的,则为 YES ;如果 useLegacySql 设置为 true ,则为 NO |
示例
示例 1:
以下示例从 INFORMATION_SCHEMA.VIEWS
视图中检索 check_option
(该列留待将来使用)以外的所有列。系统会返回默认项目 myproject
中 mydataset
的所有视图的元数据。
如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.view
格式将相应的项目 ID 添加到数据集,例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS
。
要运行查询,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在查询编辑器框中输入以下标准 SQL 查询。
INFORMATION_SCHEMA
要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。SELECT * EXCEPT(check_option) FROM mydataset.INFORMATION_SCHEMA.VIEWS
点击运行。
bq
使用 query
命令并通过 --nouse_legacy_sql
或 --use_legacy_sql=false
标志指定标准 SQL 语法。INFORMATION_SCHEMA
查询要求使用标准 SQL 语法。
如需运行查询,请输入以下命令:
bq query --nouse_legacy_sql \ '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
。
要运行查询,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在查询编辑器框中输入以下标准 SQL 查询。
INFORMATION_SCHEMA
要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。SELECT table_name, view_definition, use_standard_sql FROM mydataset.INFORMATION_SCHEMA.VIEWS WHERE table_name="myview"
点击运行。
bq
使用 query
命令并通过 --nouse_legacy_sql
或 --use_legacy_sql=false
标志指定标准 SQL 语法。INFORMATION_SCHEMA
查询要求使用标准 SQL 语法。
如需运行查询,请输入以下命令:
bq query --nouse_legacy_sql \ '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 |
+---------------+---------------------------------------------------------------+------------------+
请注意,结果显示此视图是使用标准 SQL 查询创建的。
后续步骤
- 如需了解如何创建视图,请参阅创建视图。
- 如需了解如何创建已获授权的视图,请参阅创建已获授权的视图。
- 如需了解如何列出视图,请参阅列出视图。
- 如需了解如何更新视图,请参阅更新视图。
- 如需详细了解如何管理视图,请参阅管理视图。
- 如需查看
INFORMATION_SCHEMA
的概览,请转到 BigQueryINFORMATION_SCHEMA
简介。