选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在 Athena 中使用 Data Catalog 视图

聚焦模式
在 Athena 中使用 Data Catalog 视图 - Amazon Athena

在 Amazon Athena 中创建 Data Catalog 视图需要特殊的 CREATE VIEW 语句。查询它们将使用传统的 SQL SELECT 语法。Data Catalog 视图也称为多方言视图或 MDV。

创建 Data Catalog 视图

要在 Athena 中创建 Data Catalog 视图,请使用以下语法。

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name SECURITY DEFINER [ SHOW VIEW JSON ] AS athena-sql-statement
注意

SHOW VIEW JSON 选项仅适用于 Data Catalog 视图,不适用于 Athena 视图。使用 SHOW VIEW JSON 选项执行“空运行”,以验证输入,如果验证成功,则返回将代表视图的 AWS Glue 表对象的 JSON。实际视图未创建。如果未指定 SHOW VIEW JSON 选项,则会进行验证,并在 Data Catalo 中照常创建视图。

以下示例展示 Definer 角色的用户如何创建 orders_by_date Data Catalog 视图。该示例假设 Definer 角色对 default 数据库中的 orders 表具有完全 SELECT 权限。

CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate

有关语法信息,请参阅CREATE PROTECTED MULTI DIALECT VIEW

查询 Data Catalog 视图

视图创建后,Lake Formation 管理员可以向 Invoker 主体授予对 Data Catalog 视图的 SELECT 权限。然后,Invoker 主体无需访问视图所引用的基础基表,即可查询视图。以下是 Invoker 查询示例。

SELECT * from orders_by_date where price > 5000

注意事项和限制

以下大多数 Data Catalog 视图限制特定于 Athena。有关同样适用于其他服务的 Data Catalog 视图的其他限制,请参阅 Lake Formation 文档。

  • Data Catalog 视图不能引用其他视图、数据库资源链接或表资源链接。

  • 在视图定义中,您最多可以引用 10 个表。

  • 在 Lake Formation 中,表不得具有 IAMAllowedPrincipals 数据湖权限。如果有,则会出现错误“多方言视图只能引用没有 IAMAllowedPrincipals 权限的表”。

  • 该表的 Amazon S3 位置必须注册为 Lake Formation 数据湖位置。如果该表未按此方式注册,则会出现错误“多方言视图只能引用 Lake Formation 托管表”。有关如何在 Lake Formation 中注册 Amazon S3 位置的信息,请参阅AWS Lake Formation开发者指南中的注册 Amazon S3 位置

  • AWS GlueGetTablesSearchTables API 调用不会更新 IsRegisteredWithLakeFormation 参数。要查看参数的正确值,请使用 AWS Glue GetTable API。有关更多信息,请参阅AWS Lake Formation开发者指南中的 GetTables 和 SearchTables API 不会更新 IsRegisteredWithLakeFormation 参数的值

  • DEFINER 主体只能是 IAM 角色。

  • DEFINER 角色必须对基础表具有完全的 SELECT(可授予)权限。

  • 不支持 UNPROTECTED Data Catalog 视图。

  • 视图定义中不支持用户定义的函数(UDF)。

  • Athena 联合数据来源不能用于 Data Catalog 视图。

  • 外部 Hive 元存储不支持 Data Catalog 视图。

  • Athena 在检测到过时视图时会显示错误消息。发生以下一种情况时,会报告过时的视图:

    • 视图引用了不存在的表或数据库。

    • 在引用的表中进行了架构或元数据更改。

    • 删除了引用的表并使用不同的架构或配置重新创建。

权限

Data Catalog 视图需要三个角色:Lake Formation AdminDefinerInvoker

  • Lake Formation Admin – 有权配置所有 Lake Formation 权限。

  • Definer – 创建 Data Catalog 视图。Definer 角色必须对视图定义引用的所有基础表具有完全的可授予 SELECT 权限。

  • Invoker – 可以查询 Data Catalog 视图或检查其元数据。若要显示查询的调用者,可以使用 invoker_principal() DML 函数。有关更多信息,请参阅 invoker_principal()

Definer 角色的信任关系必须允许 AWS Glue 和 Lake Formation 服务主体采取 sts:AssumeRole 操作。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的创建视图的先决条件

还需要针对 Athena 访问的 IAM 权限。有关更多信息,请参阅 Amazon Athena 的 AWS 托管策略

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。