在 Athena 中使用 Data Catalog 檢視 - Amazon Athena

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

在 Athena 中使用 Data Catalog 檢視

在 Amazon Athena 中建立 Data Catalog 檢視需要特殊CREATE VIEW陳述式。查詢它們會使用傳統SQLSELECT語法。Data Catalog 檢視也稱為多方方位檢視,或 MDVs。

建立 Data Catalog 檢視

若要在 Athena 中建立 Data Catalog 檢視,請使用下列語法。

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name SECURITY DEFINER [ SHOW VIEW JSON ] AS athena-sql-statement
注意

SHOW VIEW JSON 此選項僅適用於 Data Catalog 檢視,不適用於 Athena 檢視。使用 SHOW VIEW JSON選項會執行「乾執行」來驗證輸入,如果驗證成功, 會傳回將代表檢視JSON的 AWS Glue 資料表物件的 。不會建立實際檢視。如果未指定 SHOW VIEW JSON選項,則會完成驗證,並在 Data Catalog 中如常建立檢視。

下列範例顯示Definer角色的使用者如何建立 orders_by_date Data Catalog 檢視。此範例假設 Definer 角色對 default 資料庫中的 orders 資料表具有完整的 SELECT 許可。

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

如需語法資訊,請參閱 CREATE PROTECTED MULTI DIALECT VIEW

查詢 Data Catalog 檢視

建立檢視後,Lake Formation管理員可以將 Data Catalog 檢視的SELECT許可授予Invoker委託人。然後,Invoker 主體可查詢檢視,而無需存取檢視參考的基礎基本資料表。以下是範例 Invoker 查詢。

SELECT * from orders_by_date where price > 5000

考量與限制

下列大多數 Data Catalog 檢視限制都是 Athena 特有的。如需也適用於其他服務的資料型錄檢視的其他限制,請參閱 Lake Formation 文件。

  • Data Catalog 檢視無法參考其他檢視、資料庫資源連結或資料表資源連結。

  • 檢視定義中可參考最多 10 個資料表。

  • 資料表不得具有 Lake Formation 中的IAMAllowedPrincipals資料湖許可。如果存在錯誤,多方位檢視可能只會在沒有IAMAllowedPrincipals許可的情況下出現參考資料表

  • 資料表的 Amazon S3 位置必須註冊為 Lake Formation 資料湖位置。如果資料表未如此註冊,則錯誤多方位檢視可能只會參考 Lake Formation 受管資料表。如需如何在 Lake Formation 中註冊 Amazon S3 位置的詳細資訊,請參閱 AWS Lake Formation 開發人員指南 中的註冊 Amazon S3 位置

  • 和 AWS Glue GetTablesSearchTablesAPI呼叫不會更新 IsRegisteredWithLakeFormation 參數。若要檢視 參數的正確值,請使用 AWS Glue GetTable API。如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南 中的 GetTables 和 SearchTables APIs 不要更新 IsRegisteredWithLakeFormation 參數的值

  • DEFINER 主體只能是IAM角色。

  • DEFINER 角色必須具有基礎資料表的完整 SELECT (可授予) 許可。

  • UNPROTECTED Data Catalog 檢視不受支援。

  • 檢視定義不支援使用者定義的函數 (UDFs)。

  • Athena 聯合資料來源無法用於 Data Catalog 檢視。

  • 外部 不支援 Data Catalog 檢視 Hive 中繼存放區。

  • Athena 會在偵測到過時的檢視時顯示錯誤訊息。當發生下列其中一種情況時,便會報告過時的檢視:

    • 檢視參考資料表或資料庫不存在。

    • 在參考的資料表中進行了結構描述或中繼資料變更。

    • 參考的資料表遭捨棄,並使用不同的結構描述或組態重新建立。

許可

Data Catalog 檢視需要三個角色:Lake Formation AdminDefinerInvoker

  • Lake Formation Admin – 具有設定所有 Lake Formation 許可的存取權。

  • Definer – 建立 Data Catalog 檢視。對於檢視定義參考的所有基礎資料表,Definer 角色必須具有完整的可授予 SELECT 許可。

  • Invoker – 可查詢 Data Catalog 檢視或檢查其中繼資料。若要顯示查詢的叫用者,您可以使用 invoker_principal()DML函數。如需詳細資訊,請參閱invoker_principal()

Definer 角色的信任關係必須允許 AWS Glue 和 Lake Formation 服務主體sts:AssumeRole的動作。如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南 中的建立檢視的先決條件

IAM 也需要 Athena 存取許可。如需詳細資訊,請參閱AWS Amazon Athena 的 受管政策