本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
你可以使用适用于 Athena 的 SQL 编辑器、Amazon Redshift 和使用/来创建 AWS Glue Data Catalog 视图。 AWS Glue APIs AWS 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 类型,而 Athena 则指定复杂类型。如果视图有一个
SUPER
类型字段,而另一个引擎将该列引用为特定的复杂类型,如 struct(<street_address:struct<street_number:int, street_name:string, street_type:string>>
),那么数据目录会认为该字段是特定的复杂类型,并在存储描述符中使用该字段,而无需使用Force
标志。
有关用于创建和管理数据目录视图的语法的更多信息,请参阅:
《Amazon Athena 用户指南》中的 Glue Data Catalog 视图查询语法。
《Amazon Redshift 数据库开发人员指南》中的在 AWS Glue Data Catalog中创建视图。
有关与 Data Catalog 中的视图相关的 SQL 命令的更多信息,请参阅 CREATE EXTERNAL VIEW、ALTER EXTERNAL VIEW 和 DROP EXTERNAL VIEW。
创建数据目录视图后,该视图的详细信息可在 Lake Formation 控制台中查看。
在 Lake Formation 控制台中选择“数据目录”下的视图。
可用视图列表将显示在“视图”页面上。
从列表中选择一个视图,详细信息页面将显示该视图的属性。

- 架构
选择
Column
行,然后选择编辑 LF 标签,以更新标签值或分配新的 LF 标签。- SQL 定义
您可以查看可用 SQL 定义的列表。选择添加 SQL 定义,然后选择要添加 SQL 定义的查询引擎。在
Edit definition
列下选择查询引擎(Athena 或 Amazon Redshift)以更新 SQL 定义。- LF 标签
选择编辑 LF 标签以编辑标签的值或分配新标签。您可以使用 LF 标签来授予对视图的权限。
- 跨账户访问
-
您可以看到与您共享数据目录视图的 AWS 账户组织和组织单位 (OUs) 的列表。
- 基础表
用于创建视图的 SQL 定义中引用的基础表显示在此选项卡下。