使用视图 - Amazon Athena

使用视图

在 Amazon Athena 中,视图是逻辑表,而非物理表。每次在查询中引用视图时,定义该视图的查询都会运行。您可以从 SELECT 查询创建视图,然后在未来的查询中引用该视图。

您可以在 Athena 中使用两种不同的视图:Athena 视图和 AWS Glue Data Catalog 视图。

何时使用 Athena 视图?

您可能希望创建 Athena 视图以达到以下目的:

  • 查询数据子集:例如,您可以根据原始表创建一个包含列子集的视图,以简化查询数据。

  • 合并表:您可以使用视图将多个表合并为一个查询。如果您有多个表,希望使用 UNION ALL 将它们组合起来,可以创建一个视图,利用表达式简化针对组合表的查询。

  • 隐藏复杂性:使用视图隐藏现有基本查询的复杂性和简化用户运行的查询。基本查询通常包括表之间的联接、列列表中的表达式和其他 SQL 语法,这使理解和调试查询变得困难。您可以创建一个能够隐藏复杂性和简化查询的视图。

  • 优化查询:您可以使用视图来试验优化技术,以创建优化的查询。例如,如果您发现某种 WHERE 条件、JOIN 命令或其他表达式的组合能带来最佳性能,则可以使用这些子句和表达式创建一个视图。应用程序然后可以针对此视图执行相对简单的查询。如果后来您又发现更好的优化原始查询的办法,则当您重新创建视图时,所有应用程序会立即利用优化的基本查询。

  • 隐藏底层名称:您可以使用视图隐藏底层表和列名称,并最大程度减少维护问题(如果这些名称改变)。如果名称发生变化,只需使用新名称重新创建视图即可。使用该视图而非表的查询直接保持运行,无需更改。

    有关更多信息,请参阅 使用 Athena 视图

何时使用 AWS Glue Data Catalog 视图?

当您想跨 AWS 服务(例如 Amazon Athena 和 Amazon Redshift)使用单一通用视图时,请使用 AWS Glue Data Catalog 视图。在 Data Catalog 视图中,访问权限由创建视图的用户(而不是查询视图的用户)定义。这种授权方法称为定义程序语义。

以下使用案例展示如何使用 Data Catalog 视图。

  • 优化访问控制 – 您可以创建视图,根据用户所需的权限级别来限制数据访问。例如,您可以使用 Data Catalog 视图来防止非人力资源(HR)部门的员工查看个人身份信息。

  • 确保记录完整 – 通过对 Data Catalog 视图应用某些筛选器,您可以确保 Data Catalog 视图中的数据记录始终完整。

  • 增强安全性 – 在 Data Catalog 视图中,用于创建视图的查询定义必须完好无损,才能创建视图。这样的话,Data Catalog 视图不易受到恶意行为者的 SQL 命令的影响。

  • 防止访问基础表 – 定义程序语义允许用户访问视图,而无需向他们提供基础表。只有定义视图的用户才需要访问表。

Data Catalog 视图定义存储于 AWS Glue Data Catalog。这意味着,您可以使用 AWS Lake Formation 通过资源授权、列授权或基于标签的访问控制来授予访问权限。有关在 Lake Formation 中授予和撤消访问权限的更多信息,请参阅《AWS Lake Formation Developer Guide》中的 Granting and revoking permissions on Data Catalog resources

有关更多信息,请参阅 在 Athena 中使用 Data Catalog 视图