视图简介
视图是由 SQL 查询定义的虚拟表。您可以使用视图为复杂查询或一组有限的数据提供易于重用的名称,然后您可以授权其他用户访问这些名称。在您创建视图后,用户可以像查询表一样查询视图。查询结果仅包含定义视图的查询中指定的表和字段的数据。
定义视图的查询会在每次查询视图时运行。如果您经常查询大型或计算开销很大的视图,则应考虑创建具体化视图。
BigQuery 视图通常用于:
- 将计算和联接逻辑抽象化并存储到通用对象中,从而简化查询使用
- 提供对一部分数据和计算逻辑的访问权限,而无需访问基表
您还可以将视图用作可视化工具(如 Looker Studio)的数据源。
与具体化视图的比较
视图是虚拟的,并提供了对一组数据的可重复使用引用,但不会实际存储任何数据。具体化视图使用 SQL 定义(与常规视图一样),但会实际存储数据供 BigQuery 使用以提升性能。如需进一步比较,请参阅具体化视图功能。
视图限制
BigQuery 视图存在如下限制:
- 视图是只读的。 例如,您无法运行用于插入、更新或删除数据的查询。
- 包含视图的数据集与包含视图所引用表的数据集必须位于相同位置。
- 视图内的引用必须使用数据集进行限定。默认数据集不会影响视图正文。
- 您无法使用
TableDataList
JSON API 方法从视图中检索数据。如需了解详情,请参阅 Tabledata: list。 - 使用视图时,不能混合使用 GoogleSQL 查询和旧版 SQL 查询。GoogleSQL 查询无法引用使用旧版 SQL 语法定义的视图。
- 无法在视图中引用查询参数。
- 创建视图时,基础表的架构与视图一同存储。如果在视图创建后添加、删除或修改列,则视图不会自动更新,并且在视图 SQL 定义更改或视图重新创建之前,报告的架构会一直不准确。尽管报告的架构可能会不准确,但所有已提交的查询都会产生准确的结果。
- 您无法自动将旧版 SQL 视图更新为 GoogleSQL 语法。如需修改用于定义视图的查询,您可以使用以下各项:
- Google Cloud 控制台中的修改查询选项
- bq 命令行工具中的
bq update --view
命令 - BigQuery 客户端库
- update 或 patch API 方法。
- 您无法在定义视图的 SQL 查询中包含用户定义的临时性函数或临时表。
- 您无法在通配符表查询中引用视图。
查看配额
如需了解适用于视图的配额和限制,请参阅视图限制。
用于定义视图的 SQL 查询还要受查询作业配额的限制。
查看价格
BigQuery 的视图属于逻辑视图,而非具体化视图。由于视图并未具体化,因此每次查询视图时,定义视图的查询都会运行。我们会根据顶级查询直接或间接引用的所有表字段中的数据总量来计算查询费用。如需了解详情,请参阅查询价格。
视图安全性
如需控制对 BigQuery 中视图的访问权限,请参阅授权视图。