获取视图相关信息

本文档介绍了如何在 BigQuery 中获取关于视图的信息或元数据。

您可以通过以下方式获取视图元数据:

  • 使用 GCP Console 或经典版 BigQuery 网页界面
  • 使用 bq show CLI 命令
  • 调用 tables.get API 方法
  • 使用客户端库
  • 查询 INFORMATION_SCHEMA 视图(测试版

所需权限

如需获取有关视图的信息,您至少必须具有 bigquery.tables.get 权限。以下预定义的 Cloud IAM 角色包含 bigquery.tables.get 权限:

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

此外,如果用户具有 bigquery.datasets.create 权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner 访问权限。 借助 bigquery.dataOwner 访问权限,用户可以获取有关数据集中视图的信息。

如需详细了解 BigQuery 中的 Cloud IAM 角色和权限,请参阅访问权限控制

获取视图信息

获取视图相关信息的过程与获取表相关信息的过程相同。

如需获取有关视图的信息,请执行如下操作:

Console

  1. 展开您的数据集。

  2. 点击视图名称。

  3. 点击详细信息详细信息标签页显示了视图的说明、视图信息和定义视图的 SQL 查询。

    查看详情

经典版界面

  1. 展开您的数据集。

  2. 点击视图名称。

  3. 点击 DetailsView Details 页面显示了视图的说明、视图信息和定义视图的 SQL 查询。

    查看详情

CLI

发出 bq show 命令。--format 标志可用于控制输出。如果您要获取默认项目以外的项目内的视图信息,请按照如下格式将项目 ID 添加到数据集中:[PROJECT_ID]:[DATASET]

bq show \
--format=prettyjson \
project_id:dataset.view

其中:

  • project_id 是您的项目 ID
  • dataset 是数据集的名称
  • view 是视图名称。

示例:

输入以下命令,显示默认项目中数据集 mydatasetmyview 视图的相关信息。

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 参考文档

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}
fmt.Printf("View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)

Python

试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMA测试版

INFORMATION_SCHEMA 是一系列视图,可以访问有关数据集、表和视图的元数据。

VIEWS 视图

查询 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

如需详细了解表和视图属性,请参阅 REST API 文档中的表资源页。

示例

示例 1:

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

针对 INFORMATION_SCHEMA.VIEWS 视图的查询必须具有数据集限定符。提交查询的用户必须能够访问包含视图的数据集。

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

如需运行查询,请执行以下步骤:

控制台

  1. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 GCP Console

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. 点击运行

CLI

使用 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:

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

针对 INFORMATION_SCHEMA.VIEWS 视图的查询必须具有数据集限定符。提交查询的用户必须能够访问包含视图的数据集。

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

如需运行查询,请执行以下步骤:

控制台

  1. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 GCP Console

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. 点击运行

CLI

使用 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 查询创建的。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面