CREATE VIEW 和 CREATE DIALECT VIEW - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CREATE VIEW 和 CREATE DIALECT VIEW

视图是一个逻辑表,可以被未来查询所引用。视图不包含任何数据,也不写入数据。相反,当您每次通过另一个查询引用该视图时,该视图指定的查询都会运行。

  • CREATE VIEW 从指定的 SELECT 查询创建 Athena 视图。Athena 视图在 Athena 中起作用。有关 Athena 视图的更多信息,请参阅使用视图

  • CREATE PROTECTED MULTI DIALECT VIEW 在 Amazon Glue Data Catalog 中创建 Amazon Glue Data Catalog 视图。Amazon Glue Data Catalog 视图跨 Amazon Web Services 服务(例如 Amazon Athena 和 Amazon Redshift)提供单一通用视图。有关 Amazon Glue Data Catalog 视图的更多信息,请参阅在 Athena 中使用 Data Catalog 视图

CREATE VIEW

创建在 Athena 中使用的视图。

摘要

CREATE [ OR REPLACE ] VIEW view_name AS query

可选的 OR REPLACE 子句允许您通过替换来更新现有视图。有关更多信息,请参阅 创建视图

示例

要根据表 orders 创建视图 test,请使用类似如下的查询:

CREATE VIEW test AS SELECT orderkey, orderstatus, totalprice / 2 AS half FROM orders;

要根据表 orders 创建视图 orders_by_date,请使用以下查询:

CREATE VIEW orders_by_date AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate;

要更新现有视图,请使用类似于以下内容的示例:

CREATE OR REPLACE VIEW test AS SELECT orderkey, orderstatus, totalprice / 4 AS quarter FROM orders;

有关使用 Athena 视图的更多信息,请参阅使用视图

CREATE PROTECTED MULTI DIALECT VIEW

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

语法

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

(可选)通过替换现有视图来更新它。如果 Data Catalog 视图中存在其他引擎的 SQL 方言,则无法替换该视图。如果调用引擎拥有视图中唯一的 SQL 方言,则可以替换视图。

PROTECTED

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

MULTI DIALECT

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

SECURITY DEFINER

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

SHOW VIEW JSON

(可选)返回 Data Catalog 视图规范的 JSON,而不实际创建视图。当您要验证视图的 SQL 并返回 Amazon Glue 将要使用的表元数据时,此“空运行”选项非常有用。

示例

以下示例基于 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

有关使用 Amazon Glue Data Catalog 视图的更多信息,请参阅在 Athena 中使用 Data Catalog 视图