Glue Data Catalog 视图语法 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Glue Data Catalog 视图语法

该功能为预览版,可能会发生变化。有关更多信息,请参阅 Amazon 服务条款文档中的“测试版和预览”部分。

本部分介绍用于创建和管理 Amazon Glue Data Catalog 视图的数据定义语言(DDL)命令。

ALTER VIEW DIALECT

要更新 Data Catalog 视图,您可以添加引擎方言,或者更新或删除现有的引擎方言。只有 Lake FormationAdminDefiner(创建视图的用户)才有权在 Data Catalog 视图上使用 ALTER VIEW DIALECT 语句。

语法

ALTER VIEW name [ FORCE ] [ ADD|UPDATE ] DIALECT AS query
ALTER VIEW name [ DROP ] DIALECT
FORCE

FORCE 关键字会导致视图中相互冲突的引擎方言信息被新定义覆盖。当 Data Catalog 视图更新导致现有引擎方言中的视图定义相互冲突时,FORCE 关键字很有用。假设 Data Catalog 视图同时使用 Athena 和 Amazon Redshift 方言,并且更新导致与视图定义中的 Amazon Redshift 发生冲突。在这种情况下,您可以使用 FORCE 关键字来允许更新完成,并将 Amazon Redshift 方言标记为过时。当标记为过时的引擎查询视图时,查询会失败。引擎会抛出异常以禁止过时结果。要更正此问题,请更新视图中的过时方言。

ADD

为 Data Catalog 视图添加新的引擎方言。指定的引擎不得已存在于 Data Catalog 视图中。

UPDATE

更新 Data Catalog 视图中已存在的引擎方言。

DROP

从 Data Catalog 视图中删除现有的引擎方言。从 Data Catalog 视图中删除引擎后,已删除的引擎无法查询 Data Catalog 视图。视图中的其他引擎方言仍然可以查询视图。

DIALECT AS

引入特定于引擎的 SQL 查询。

示例

ALTER VIEW orders_by_date FORCE ADD DIALECT AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate
ALTER VIEW orders_by_date FORCE UPDATE DIALECT AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate
ALTER VIEW orders_by_date DROP DIALECT

CREATE PROTECTED MULTI DIALECT VIEW

在 Amazon Glue Data Catalog 中创建 Data Catalog 视图。Data Catalog 视图是一种单一视图架构,可以在 Athena 和其他 SQL 引擎(例如 Amazon Redshift 和 Amazon EMR)之间无缝运行。

语法

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name [ SECURITY DEFINER ] AS query
PROTECTED

所需关键字。指定视图受到保护以防数据泄露。Data Catalog 视图只能作为 PROTECTED 视图创建。

MULTI DIALECT

指定视图支持不同查询引擎的 SQL 方言,因此可以由这些引擎读取。

SECURITY DEFINER

指定定义程序语义适用于此视图。定义程序语义意味着基础表的有效读取权限属于定义视图的主体或角色,而不是执行实际读取的主体。

OR REPLACE

如果 Data Catalog 视图中存在其他引擎的 SQL 方言,则无法替换该视图。如果调用引擎拥有视图中唯一的 SQL 方言,则可以替换视图。

示例

以下示例基于 orders 表查询创建 orders_by_date Data Catalog 视图。

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

DESCRIBE

显示指定 Data Catalog 视图的列的列表。DESCRIBE 语句与 Athena 视图的 DESCRIBE 语句类似。与 Athena 视图不同的是,该语句的输出通过 Lake Formation 访问控制进行控制。因此,此查询的输出不是视图的所有列,而只是调用者有权访问的列。

语法

DESCRIBE [db_name.]view_name

示例

DESCRIBE orders

DROP VIEW

仅当 Data Catalog 视图中存在调用引擎方言时,才删除 Data Catalog 视图。例如,如果用户从 Athena 调用 DROP VIEW,则仅当视图中存在 Athena 的方言时,视图才会被删除。否则,该操作将失败。只有 Lake Formation 管理员和视图定义者有权在 Data Catalog 视图上使用 DROP VIEW 语句。

语法

DROP VIEW [ IF EXISTS ] view_name

示例

DROP VIEW orders_by_date
DROP FORCE VIEW IF EXISTS orders_by_date

如果该视图不存在,可选 IF EXISTS 子句将抑制错误出现。

SHOW COLUMNS

仅显示单个指定 Data Catalog 视图的列名。SHOW COLUMNS 语句与 Athena 视图的 SHOW COLUMNS 语句类似。与 Athena 视图不同的是,该语句的输出通过 Lake Formation 访问控制进行控制。因此,此查询的输出不是视图的所有列,而只是调用者有权访问的列。

语法

SHOW COLUMNS {FROM|IN} database_name.view_name
SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]

SHOW CREATE VIEW

显示用于创建 Data Catalog 视图的 SQL 语法。返回的 SQL 显示了 Athena 中使用的创建视图语法。只有 Lake Formation 管理员和视图定义者主体有权在 Data Catalog 视图上调用 SHOW CREATE VIEW

语法

SHOW CREATE VIEW view_name

示例

SHOW CREATE VIEW orders_by_date

SHOW VIEWS

列出数据库中所有视图的名称。列出数据库中拥有 Athena 引擎 SQL 方言的所有 Data Catalog 视图。没有视图中存在的 Athena 引擎方言的其他 Data Catalog 视图会被过滤掉。

语法

SHOW VIEWS [IN database_name] [LIKE 'regular_expression']

示例

SHOW VIEWS
SHOW VIEWS IN marketing_analytics LIKE 'orders*'