本文档介绍了如何在 BigQuery 中管理视图。您可以通过以下方式管理 BigQuery 视图:
复制视图
目前,您只能使用 Cloud Console 复制视图。
您无法使用 bq
命令行工具、REST API 或客户端库复制视图。如有相应需要,您必须在目标数据集中重新创建视图。为了帮助您重新创建视图,您可以使用 bq
命令行工具复制视图的 SQL 查询。
所需权限
如需在 Cloud Console 中复制视图,您至少必须具有以下权限。
对于源数据集:
bigquery.tables.get
,用于复制视图的元数据bigquery.tables.getData
,用于复制视图的 SQL 查询
如需访问视图的 SQL 查询引用的表,可能还需要其他权限,例如 bigquery.tables.getData
。
对于目标数据集:
bigquery.tables.create
,用于在目标数据集中创建视图的副本
以下预定义的 IAM 角色具有 bigquery.tables.create
、bigquery.tables.get
和 bigquery.tables.getData
权限:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
此外,如果用户具有 bigquery.datasets.create
权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner
访问权限。具有 bigquery.dataOwner
访问权限的用户可以复制源数据集中的视图,但如果目标数据集不是由该用户创建的,则该用户还需要对目标数据集的访问权限。
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限。
复制视图
要复制视图,请执行以下操作:
控制台
在探索器面板中,展开您的项目和数据集,然后选择视图。
在详细信息面板中,点击复制视图。
在复制视图对话框中,执行以下操作:
- 在来源 (Source) 部分中,验证您的项目名称、数据集名称和表名称是否正确无误。
在目标 (Destination) 部分中执行如下设置:
- 对于项目名称,选择要将视图复制到哪个项目。
- 对于数据集名称,选择要包含所复制视图的数据集。
- 对于表名称,输入该视图的名称。您可以在框中输入新的视图名称,以便更改视图名称。如果要输入新名称,这个新名称必须遵循视图命名规则。
点击复制。
bq
bq
命令行工具不支持复制视图。如有相应需要,您必须在目标数据集中重新创建视图。为了帮助您重新创建视图,您可以复制用于定义视图的 SQL 查询。
要复制定义视图的 SQL 查询,请执行 bq show
命令。可以使用 --format
标志控制输出。如果您要获取非默认项目中的视图信息,请按以下格式将相应项目 ID 添加到数据集中:project_id:dataset
。要将视图属性写入文件,请在命令中添加 > path_to_file
。
bq show \ --format=prettyjson \ project_id:dataset.view > path_to_file
其中:
- project_id 是项目 ID。
- dataset 是数据集的名称。
- view 是视图名称。
- path_to_file 是本地机器上输出文件的路径。
示例:
输入以下命令可显示 mydataset
中有关 myview
的信息。mydataset
在默认项目中。
bq show --format=prettyjson mydataset.myview
输入以下命令可显示 mydataset
中有关 myview
的信息。mydataset
在 myotherproject
中,不在默认项目中。视图属性会写入本地文件 /tmp/myview.json
。
bq show \
--format=prettyjson \
myotherproject:mydataset.myview > /tmp/myview.json
API
REST API 不支持复制视图。如有相应需要,您必须在目标数据集中重新创建视图。有关使用 REST API 创建视图的信息,请参阅创建视图。
重命名视图
目前,只有在使用 Cloud Console 复制视图时才能重命名视图。有关在复制视图时对视图进行重命名的说明,请参阅复制视图。
您无法使用 bq
命令行工具、API 或客户端库更改现有视图的名称。如有相应需要,您必须使用新名称 重新创建视图。
删除视图
您可以通过以下方式删除视图:
- 使用 Cloud Console
- 使用
bq
命令行工具的bq rm
命令 - 调用
tables.delete
API 方法
目前,无论使用何种方法,您每次只能删除一个视图。
若要在指定的时间段后自动删除视图,请设置数据集级别的默认到期时间,或在创建视图时设置到期时间。
所需权限
如需删除视图,您至少必须具有 bigquery.tables.delete
和 bigquery.tables.get
权限。以下预定义 IAM 角色具有 bigquery.tables.delete
和 bigquery.tables.get
权限:
bigquery.dataOwner
bigquery.dataEditor
bigquery.admin
此外,如果用户具有 bigquery.datasets.create
权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner
访问权限。具备 bigquery.dataOwner
访问权限的用户可以在数据集中删除视图。
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限。
删除视图
删除视图的方法如下:
控制台
在探索器面板中,展开您的项目和数据集,然后选择视图。
在详细信息面板中,点击删除视图。
在对话框中键入视图的名称,然后点击删除进行确认。
bq
使用带有 --table
标志(或 -t
快捷方式)的 bq rm
命令删除视图。当您使用 bq
命令行工具移除视图时,必须确认操作。您可以使用 --force
标志(或 -f
快捷方式)跳过确认。
如果该视图属于非默认项目中的数据集,请按以下格式将相应项目 ID 添加到数据集名称中:project_id:dataset
。
bq rm \ -f \ -t \ project_id:dataset.view
其中:
- project_id 是项目 ID。
- dataset 是包含该表的数据集的名称。
- view 是要删除的视图的名称。
示例:
输入以下命令可从 mydataset
删除 myview
。mydataset
在默认项目中。
bq rm -t mydataset.myview
输入以下命令可从 mydataset
删除 myview
。mydataset
在 myotherproject
中,不在默认项目中。
bq rm -t myotherproject:mydataset.myview
输入以下命令可从 mydataset
删除 myview
。mydataset
在默认项目中。该命令使用 -f
快捷方式绕过确认。
bq rm -f -t mydataset.myview
API
调用 tables.delete
API 方法并使用 tableId
参数指定要删除的视图。
C#
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 BigQuery C# API 参考文档。
Go
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
Node.js
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 BigQuery PHP API 参考文档。
Python
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
Ruby
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 BigQuery Ruby API 参考文档。
后续步骤
- 如需了解如何创建视图,请参阅创建视图。
- 如需了解如何创建已获授权的视图,请参阅创建已获授权的视图。
- 如需了解如何列出视图,请参阅列出视图。
- 如需了解如何获取视图元数据,请参阅获取有关视图的信息。
- 如需了解如何更新视图,请参阅更新视图。