

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 DDL 语句创建数据目录视图
使用 DDL 语句创建视图

你可以使用适用于 Athena 的 SQL 编辑器、Amazon Redshift 和使用/来创建 Amazon Glue Data Catalog 视图。 Amazon Glue APIs Amazon CLI

要使用 SQL 编辑器创建数据目录视图，请选择 Athena 或 Redshift Spectrum，然后使用 `CREATE VIEW` 数据定义语言（DDL）语句创建视图。使用第一个引擎的方言创建视图后，可以使用第二个引擎的 `ALTER VIEW` DDL 语句添加其它方言。

在定义视图时，必须考虑以下几点：
+ **定义多方言视图** - 定义具有多种方言的视图时，不同方言的架构必须匹配。每种 SQL 方言的语法规范略有不同。在所有方言中，定义数据目录视图的查询语法应解析为完全相同的列列表，包括类型和名称。这些信息存储在视图的 `StorageDescriptor` 中。方言还必须引用数据目录中相同的底层表对象。

  要使用 DDL 向视图添加另一种方言，可以使用 `ALTER VIEW` 语句。如果 `ALTER VIEW` 语句试图更新视图定义，如修改视图的存储描述符或底层表，该语句就会出错，提示“输入与现有存储描述符不匹配”。您可以使用 SQL 转换操作来确保视图列类型匹配。
+ **更新视图** - 要更新视图，可以使用 `UpdateTable` API。如果在不匹配存储描述符或引用表的情况下更新视图，则可以提供 `FORCE` 标志（语法参见引擎 SQL 文档）。强制更新后，视图将采用强制的 `StorageDescriptor` 和引用表。任何进一步的 `ALTER VIEW` DDL 都应与修改后的值相匹配。已更新为具有不兼容方言的视图将处于“过时”状态。视图状态在 Lake Formation 控制台中可见，可使用 `GetTable` 操作查看。
+ **以字符串形式引用 varchar 列类型** – 无法将 Redshift Spectrum 的 varchar 列类型转换为字符串。如果在 Redshift Spectrum 中创建了具有 varchar 列类型的视图，而后续方言尝试将该字段作为字符串引用，则数据目录会将其作为字符串处理，而无需使用 `FORCE` 标志。
+ **复杂类型字段的处理** – Amazon Redshift 将所有复杂类型都视为 [SUPER 类型](https://docs.amazonaws.cn/redshift/latest/dg/r_SUPER_type.html)，而 Athena 则指定复杂类型。如果视图有一个 `SUPER` 类型字段，而另一个引擎将该列引用为特定的复杂类型，如 struct（`<street_address:struct<street_number:int, street_name:string, street_type:string>>`），那么数据目录会认为该字段是特定的复杂类型，并在存储描述符中使用该字段，而无需使用 `Force` 标志。

有关用于创建和管理数据目录视图的语法的更多信息，请参阅：
+ 《Amazon Athena 用户指南》中的[使用 Amazon Glue Data Catalog 视图](https://docs.amazonaws.cn/athena/latest/ug/views-glue.html)。
+ 《Amazon Athena 用户指南》中的 [Glue Data Catalog 视图查询语法](https://docs.amazonaws.cn/athena/latest/ug/views-glue-ddl.html)。
+ 《Amazon Redshift 数据库开发人员指南》中的[在 Amazon Glue Data Catalog中创建视图](https://docs.amazonaws.cn/redshift/latest/dg/data-catalog-views-overview.html)。

  有关与 Data Catalog 中的视图相关的 SQL 命令的更多信息，请参阅 [CREATE EXTERNAL VIEW](https://docs.amazonaws.cn/redshift/latest/dg/r_CREATE_EXTERNAL_VIEW.html)、[ALTER EXTERNAL VIEW](https://docs.amazonaws.cn/redshift/latest/dg/r_ALTER_EXTERNAL_VIEW.html) 和 [DROP EXTERNAL VIEW](https://docs.amazonaws.cn/redshift/latest/dg/r_DROP_EXTERNAL_VIEW.html)。

创建数据目录视图后，该视图的详细信息可在 Lake Formation 控制台中查看。

1. 在 Lake Formation 控制台中选择“数据目录”下的**视图**。

1. 可用视图列表将显示在“视图”页面上。

1. 从列表中选择一个视图，详细信息页面将显示该视图的属性。

![\[下面的部分包含五个水平排列的选项卡，每个选项卡都包含相应的信息。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/view-definition.png)


架构  
选择 `Column` 行，然后选择**编辑 LF 标签**，以更新标签值或分配新的 LF 标签。

SQL 定义  
您可以查看可用 SQL 定义的列表。选择**添加 SQL 定义**，然后选择要添加 SQL 定义的查询引擎。在 `Edit definition` 列下选择查询引擎（Athena 或 Amazon Redshift）以更新 SQL 定义。

LF 标签  
选择**编辑 LF 标签**以编辑标签的值或分配新标签。您可以使用 LF 标签来授予对视图的权限。

跨账户访问  
您可以看到与您共享数据目录视图的 Amazon Web Services 账户组织和组织单位 (OUs) 的列表。

基础表  
用于创建视图的 SQL 定义中引用的基础表显示在此选项卡下。