选择您的 Cookie 首选项

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

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

使用 AWS Glue 中的 AWS Glue Data Catalog 视图

聚焦模式
使用 AWS Glue 中的 AWS Glue Data Catalog 视图 - AWS Glue

您可以在 AWS Glue Data Catalog 中创建和管理视图,通常称为 AWS Glue Data Catalog 视图。这些视图非常有用,因为它们支持多个 SQL 查询引擎,也支持跨不同 AWS 服务(例如 Amazon Athena、Amazon Redshift 和 AWS Glue)访问同一视图。您可以使用基于 Apache Iceberg、Apache Hudi 和 Delta Lake 的视图。

通过在 Data Catalog 中创建视图,您可以在 AWS Lake Formation 中使用资源授予和基于标记的访问控制,来授予对视图的访问权限。使用这种访问控制方法,您无需为创建视图时引用的表配置其他访问权限。这种授予权限的方法称为定义者语义,这些视图称为定义者视图。有关 AWS Lake Formation 中访问控制的更多信息,请参阅《AWS Lake Formation Developer Guide》中的 Granting and revoking permissions on Data Catalog resources

数据目录视图对于以下用例非常实用:

  • 精细访问控制:您可以创建一个视图,根据用户所需的权限来限制数据访问。例如,您可以使用 Data Catalog 中的视图来防止不在 HR 部门工作的员工查看个人身份信息(PII)。

  • 完整视图定义:通过对 Data Catalog 中的视图应用某些筛选条件,可确保视图内可用的数据记录始终完整。

  • 增强的安全性:用于创建视图的查询定义必须完整,使 Data Catalog 视图不易受到恶意行为者的 SQL 命令的影响。

  • 简单数据共享:使用 AWS Lake Formation 中的跨账户数据共享功能,无需移动数据即可与其他 AWS 账户共享数据。

创建 Data Catalog 视图

您可以利用 AWS CLI 和使用 Spark SQL 的 AWS Glue ETL 脚本创建 Data Catalog 视图。创建 Data Catalog 视图的语法包括将视图类型指定为 MULTI DIALECT,将 SECURITY 谓词指定为 DEFINER,表示定义者视图。

创建 Data Catalog 视图的 SQL 语句示例:

CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER AS SELECT order_date, sum(totalprice) AS price FROM source_table GROUP BY order_date;

创建 Data Catalog 视图后,您可以使用对该视图拥有 AWS Lake Formation“SELECT”权限的 IAM 角色,从 Amazon Athena、Amazon Redshift 或 AWS Glue ETL 作业等服务查询该视图。您无需授予对视图中引用的基础表的访问权限。

有关创建和配置 Data Catalog 视图的更多信息,请参阅《AWS Lake Formation Developer Guide》中的 Building AWS Glue Data Catalog views

支持的视图操作

以下命令片段展示了使用 Data Catalog 视图的各种方法:

CREATE VIEW

创建数据目录视图。以下示例演示如何根据现有表格创建视图:

CREATE PROTECTED MULTI DIALECT VIEW catalog_view SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table

ALTER VIEW

可用语法:

ALTER VIEW view_name [FORCE] ADD DIALECT AS query ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query ALTER VIEW view_name DROP DIALECT

您可以使用 FORCE ADD DIALECT 选项,根据新的引擎方言强制更新架构和子对象。请注意,如果不同时使用 FORCE 更新其他引擎方言,这样做可能会导致查询错误。示例如下:

ALTER VIEW catalog_view FORCE ADD DIALECTAS SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;

下例显示了如何更改视图来更新方言:

ALTER VIEW catalog_view UPDATE DIALECT AS SELECT count(*) FROM my_catalog.my_database.source_table;

DESCRIBE VIEW

描述视图的可用语法:

SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]:如果用户具有描述视图所需的 AWS Glue 和 AWS Lake Formation 权限,则可列出相应列。下面显示了几个用于显示列的示例命令:

SHOW COLUMNS FROM my_database.source_table; SHOW COLUMNS IN my_database.source_table;

DESCRIBE view_name:如果用户具有描述视图所需的 AWS Glue 和 AWS Lake Formation 权限,则可列出视图中的相应列及其元数据。

DROP VIEW

可用语法:

DROP VIEW [ IF EXISTS ] view_name

以下示例显示了 DROP 语句,该语句用于在删除视图之前测试视图是否存在:

DROP VIEW IF EXISTS catalog_view;

SHOW CREATE VIEW view_name:显示创建指定视图的 SQL 语句。以下示例演示如何创建数据目录视图:

SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view ( net_profit, customer_id, item_id, sold_date) TBLPROPERTIES ( 'transient_lastDdlTime' = '1736267222') SECURITY DEFINER AS SELECT * FROM my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)

SHOW VIEWS

列出目录中的所有视图,例如常规视图、多方言视图(MDV)和没有 Spark 方言的 MDV。可用语法如下:

SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:

下面显示了用于显示视图的示例命令:

SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';

有关创建和配置 Data Catalog 视图的更多信息,请参阅《AWS Lake Formation Developer Guide》中的 Building AWS Glue Data Catalog views

查询 Data Catalog 视图

创建 Data Catalog 视图后,即可查询视图。在 AWS Glue 作业中配置的 IAM 角色,必须拥有对 Data Catalog 视图的 Lake Formation SELECT 权限。您无需授予对视图中引用的基础表的访问权限。

完成所有设置后,就可以查询视图。例如运行以下查询来访问视图。

SELECT * from my_database.catalog_view LIMIT 10;

限制

使用数据目录视图时,请考虑以下限制。

  • 只能使用 AWS Glue 5.0 及更高版本来创建 Data Catalog 视图。

  • Data Catalog 视图定义者必须拥有对视图访问的基础基表的 SELECT 访问权限。如果特定基表对定义者角色施加了任何 Lake Formation 筛选条件,则创建 Data Catalog 视图将失败。

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

  • 该表的 Amazon S3 位置必须注册为 AWS Lake Formation 数据湖位置。如果表未注册,则会出现错误:Multi Dialect views may only reference AWS Lake Formation managed tables。有关如何在 AWS Lake Formation 中注册 Amazon S3 位置的信息,请参阅《AWS Lake Formation Developer Guide》中的 Registering an Amazon S3 location

  • 只能创建 PROTECTED 数据目录视图。不支持 UNPROTECTED 视图。

  • 在 Data Catalog 视图定义中,既不能引用其他 AWS 账户中的表,也不能引用不同区域中同一账户中的表。

  • 要跨账户或区域共享数据,必须使用 AWS Lake Formation 资源链接跨账户和跨区域共享整个视图。

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

  • 不能在数据目录视图中引用其他视图。

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