本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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 ] ASathena-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 Admin
、Definer
和 Invoker
。
-
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 的 受管政策。