

# 使用视图
<a name="views"></a>

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

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

## 何时使用 Athena 视图？
<a name="when-to-use-views"></a>

您可能希望创建 Athena 视图以达到以下目的：
+ **查询数据子集**：例如，您可以根据原始表创建一个包含列子集的视图，以简化查询数据。
+ **合并表**：您可以使用视图将多个表合并为一个查询。如果您有多个表，希望使用 `UNION ALL` 将它们组合起来，可以创建一个视图，利用表达式简化针对组合表的查询。
+ **隐藏复杂性**：使用视图隐藏现有基本查询的复杂性和简化用户运行的查询。基本查询通常包括表之间的联接、列列表中的表达式和其他 SQL 语法，这使理解和调试查询变得困难。您可以创建一个能够隐藏复杂性和简化查询的视图。
+ **优化查询**：您可以使用视图来试验优化技术，以创建优化的查询。例如，如果您发现某种 `WHERE` 条件、`JOIN` 命令或其他表达式的组合能带来最佳性能，则可以使用这些子句和表达式创建一个视图。应用程序然后可以针对此视图执行相对简单的查询。如果后来您又发现更好的优化原始查询的办法，则当您重新创建视图时，所有应用程序会立即利用优化的基本查询。
+ **隐藏底层名称**：您可以使用视图隐藏底层表和列名称，并最大程度减少维护问题（如果这些名称改变）。如果名称发生变化，只需使用新名称重新创建视图即可。使用该视图而非表的查询直接保持运行，无需更改。

  有关更多信息，请参阅 [使用 Athena 视图](views-console.md)。

## 何时使用 AWS Glue Data Catalog 视图？
<a name="when-to-use-views-gdc"></a>

当您想跨 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](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)。

有关更多信息，请参阅 [在 Athena 中使用 Data Catalog 视图](views-glue.md)。