Glue Data Catalog 视图语法
该功能为预览版,可能会发生变化。有关更多信息,请参阅 Amazon 服务条款 |
本部分介绍用于创建和管理 Amazon Glue Data Catalog 视图的数据定义语言(DDL)命令。
ALTER VIEW DIALECT
要更新 Data Catalog 视图,您可以添加引擎方言,或者更新或删除现有的引擎方言。只有 Lake Formation
Admin
和 Definer
(创建视图的用户)才有权在 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*'