管理视图
本文档介绍了如何在 BigQuery 中管理视图。您可以通过以下方式管理 BigQuery 视图:
准备工作
授予为用户提供执行本文档中的每个任务所需权限的 Identity and Access Management (IAM) 角色。 执行任务所需的权限(如果有)列出在任务的“所需权限”部分中。
复制视图
目前,您只能使用 Cloud Console 复制视图。
您无法使用 bq
命令行工具、REST API 或客户端库复制视图。如有相应需要,您必须在目标数据集中重新创建视图。为了帮助您重新创建视图,您可以使用 bq
命令行工具复制视图的 SQL 查询。
所需权限
如需在 Cloud Console 中复制视图,您需要拥有源数据集和目标数据集的 IAM 权限。
在源数据集上,您需要以下权限:
bigquery.tables.get
bigquery.tables.getData
(访问视图的 SQL 查询引用的表时需要)
在目标数据集上,您需要以下权限:
bigquery.tables.create
(可让您在目标数据集中创建视图的副本)
以下每个预定义 IAM 角色都包含复制视图所需的权限:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
此外,如果您拥有 bigquery.datasets.create
权限,则可以在自己创建的数据集中复制视图。除非您创建了目标数据集,否则还需要拥有目标数据集的访问权限。
如需详细了解 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 方法
目前,无论使用何种方法,您每次只能删除一个视图。
若要在指定的时间段后自动删除视图,请设置数据集级别的默认到期时间,或在创建视图时设置到期时间。
删除已获授权的视图时,最多可能需要 24 小时才能从源数据集的已获授权的视图列表中移除已删除的视图。
所需权限
如需删除视图,您需要拥有以下 IAM 权限:
bigquery.tables.delete
bigquery.tables.get
以下每个预定义 IAM 角色都包含删除视图所需的权限:
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
此外,如果您拥有 bigquery.datasets.create
权限,则可以在自己创建的数据集中删除视图。
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限。
删除视图
删除视图的方法如下:
控制台
在 Cloud Console 中,前往 BigQuery 页面。
在探索器面板中,展开您的项目和数据集,然后选择视图。
在详细信息面板中,点击删除视图。
在对话框中输入
"delete"
,然后点击删除进行确认。
SQL
使用 DROP VIEW 语句删除视图:
您可以在 Cloud Console 中运行 SQL 语句。在 BigQuery 页面上,将该语句输入查询编辑器。
DROP VIEW mydataset.myview
如需详细了解如何运行查询,请参阅运行交互式查询。
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 是要删除的视图的名称。
示例:
您可以使用 bq
命令行工具运行 bq
命令。
在 Cloud Console 中,激活 Cloud Shell。
输入以下命令可从 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 参考文档。
视图安全性
如需控制对 BigQuery 中视图的访问权限,请参阅控制对视图的访问权限。
后续步骤
- 要了解如何创建视图,请参阅创建视图。
- 如需了解如何创建已获授权的视图,请参阅创建已获授权的视图。
- 如需了解如何列出视图,请参阅列出视图。
- 如需了解如何获取视图元数据,请参阅获取有关视图的信息。
- 如需了解如何更新视图,请参阅更新视图。