Glue Data Catalog 檢視語法 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Glue Data Catalog 檢視語法

這項功能目前在預覽版本中,並可能會有所變更。如需詳細資訊,請參閱 AWS 服務條款文件中的「測試版和預覽版」一節。

本節說明用於建立和管理 AWS Glue Data Catalog 檢視表的資料定義語言 (DDL) 命令。

變更檢視方言

您可透過新增引擎方言,或者更新或捨棄現有引擎方言來更新 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

在中建立資料目錄檢視 AWS Glue Data Catalog。Data Catalog 檢視是一種單一檢視結構描述,可在 Athena 和其他 SQL 引擎 (例如 Amazon Redshift 和 Amazon EMR) 中順暢運作。

語法

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

必要的關鍵字。指定檢視受到保護,以防止資料洩漏。Data Catalog 檢視只能做為 PROTECTED 檢視來建立。

多方言

指定檢視支援不同查詢引擎的 SQL 方言,因此這些引擎可讀取。

安全定義程式

指定對此檢視有效的定義程式語意。定義程式語意意味著基礎資料表上的有效讀取許可屬於定義檢視的主體或角色,而不是執行實際讀取的主體。

OR REPLACE

如果檢視中存在其他引擎的 SQL 方言,則無法取代 Data Catalog 檢視。如果呼叫引擎只存取 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 管理員和檢視定義程式主體,才有權呼叫 SHOW CREATE VIEW Data Catalog 檢視上的 。

語法

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*'