逻辑视图简介

本文档简要介绍了 BigQuery 对逻辑视图的支持。

概览

视图是由 SQL 查询定义的虚拟表。BigQuery 的默认视图类型为逻辑视图。 查询结果仅包含定义视图的查询中指定的表和字段的数据。

定义视图的查询会在每次查询视图时运行。

视图类型

虽然逻辑视图是默认的视图类型,但如果您经常查询大型或计算开销很大的视图,则应考虑创建具体化视图,这是预计算视图,可定期缓存查询结果以提高性能和效率。

不过,您通常无需创建具体化视图,只需查询数据的一部分或使用其他方法,即可提高逻辑视图的性能。

您还可以创建已获授权的视图,以便将源数据集中的部分数据分享给次要数据集中的视图。然后,您可以将此视图分享给特定用户和群组(主账号),他们可以查看您分享的数据并对其运行查询,但无法直接访问源数据集。

您可以为逻辑视图或具体化视图创建已获授权的视图。物化视图的已获授权的视图称为已获授权的物化视图

使用场景

视图的常见用例包括:

  • 为复杂查询或一组有限的数据提供易于重用的名称,然后您可以授权其他用户访问这些名称。在您创建视图后,用户可以像查询表一样查询视图。
  • 将计算和联接逻辑抽象化并存储到通用对象中,从而简化查询使用。
  • 提供对一部分数据和计算逻辑的访问权限,而无需提供对基表的访问权限。
  • 针对多种使用场景优化计算费用高且数据集结果小的查询。

您还可以在其他上下文中使用视图:

与具体化视图的比较

逻辑视图是虚拟的,并提供了对一组数据的可重复使用引用,但不会实际存储任何数据。具体化视图使用 SQL 定义(与逻辑视图一样),但会将数据存储到 BigQuery 以提升性能。如需进一步比较,请参阅具体化视图功能

逻辑视图限制

BigQuery 视图存在如下限制:

  • 视图是只读的。 例如,您无法运行用于插入、更新或删除数据的查询。
  • 包含视图的数据集与包含视图所引用表的数据集必须位于相同位置
  • 视图内的引用必须使用数据集进行限定。默认数据集不会影响视图正文。
  • 您无法使用 TableDataList JSON API 方法从视图中检索数据。如需了解详情,请参阅 Tabledata: list
  • 使用视图时,不能混合使用 GoogleSQL 查询和旧版 SQL 查询。GoogleSQL 查询无法引用使用旧版 SQL 语法定义的视图。
  • 无法在视图中引用查询参数
  • 创建视图时,基础表的架构与视图一同存储。如果在视图创建后添加、删除或修改列,则视图不会自动更新,并且在视图 SQL 定义更改或视图重新创建之前,报告的架构会一直不准确。尽管报告的架构可能会不准确,但所有已提交的查询都会产生准确的结果。
  • 您无法自动将旧版 SQL 视图更新为 GoogleSQL 语法。如需修改用于定义视图的查询,您可以使用以下各项:
  • 您无法在定义视图的 SQL 查询中包含用户定义的临时性函数或临时表。
  • 您无法在通配符表查询中引用视图。

逻辑视图配额

如需了解适用于视图的配额和限制,请参阅视图限制

用于定义视图的 SQL 查询还要受查询作业配额的限制。

逻辑视图价格

BigQuery 默认使用逻辑视图,而非具体化视图。由于视图默认情况下并非实质性,因此每次查询视图时,定义视图的查询都会运行。我们会根据顶级查询直接或间接引用的所有表字段中的数据总量来计算查询费用。

逻辑视图安全

如需控制对 BigQuery 中视图的访问权限,请参阅授权视图

后续步骤