在 AWS Glue 中使用 AWS Glue Data Catalog 檢視 - AWS Glue

在 AWS Glue 中使用 AWS Glue Data Catalog 檢視

您可以在 AWS Glue Data Catalog 中建立和管理檢視,通常稱為 AWS Glue Data Catalog 檢視。這些檢視非常有用,因為其支援多個 SQL 查詢引擎,可讓您存取不同 AWS 服務中的相同檢視,例如 Amazon Athena、 Amazon Redshift 和 AWS Glue。您可以使用以 Apache Iceberg、Apache Hudi 和 Delta Lake 為基礎的檢視。

透過在 Data Catalog 中建立檢視,您可以在 AWS Lake Formation 中使用資源授權和以標籤為基礎的存取控制來授予其存取權。使用這種存取控制方法,您不必在建立檢視時設定對參考的資料表的額外存取權。這種授予許可的方法稱為定義者語意,這些檢視稱為定義者檢視。如需有關 AWS Lake Formation 中存取控制的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的授與和撤銷 Data Catalog 資源的許可

Data Catalog 檢視對於下列使用案例很有用:

  • 精細的存取控制 – 您可以建立一個檢視,根據使用者需要的許可來限制資料存取。例如,您可以使用 Data Catalog 中的檢視阻止不在 HR 部門工作的員工查看個人身分識別資訊 (PII)。

  • 完整檢視定義 – 透過在 Data Catalog 中的檢視上套用篩選條件,您可以確保檢視中可用的資料記錄一律是完整的。

  • 增強的安全性 – 用於建立檢視的查詢定義必須是完整的,使得 Data Catalog 檢視較不容易受到惡意執行者的 SQL 命令影響。

  • 簡單資料共用 – 使用 AWS Lake Formation 中的跨帳戶資料共用,與其他 AWS 帳戶共用資料而不移動資料。

建立 Data Catalog 檢視

您可以使用 AWS CLI 和 AWS Glue ETL 指令碼透過 Spark SQL 建立 Data Catalog 檢視。用於建立 Data Catalog 檢視的語法包括將檢視類型指定為 MULTI DIALECT,並將 SECURITY 述詞指定為 DEFINER,以指示定義者檢視。

建立 Data Catalog 檢視的 SQL 陳述式範例:

CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER AS SELECT order_date, sum(totalprice) AS price FROM source_table GROUP BY order_date;

建立 Data Catalog 檢視後,您可以使用 IAM 角色與檢視上的 AWS Lake Formation `SELECT` 許可搭配使用,以從 Amazon Athena、Amazon Redshift 或 AWS Glue ETL 任務等服務查詢其。您不需要授予檢視中參考的基礎資料表存取權。

如需建立和設定 Data Catalog 檢視的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的建置 AWS Glue Data Catalog 檢視

受支援的檢視操作

下列命令片段為您顯示使用 Data Catalog 檢視的各種方式:

CREATE VIEW

建立 data-catalog 檢視。以下是用於顯示從現有資料表建立檢視的範例:

CREATE PROTECTED MULTI DIALECT VIEW catalog_view SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table

ALTER VIEW

可用的語法:

ALTER VIEW view_name [FORCE] ADD DIALECT AS query ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query ALTER VIEW view_name DROP DIALECT

您可以使用 FORCE ADD DIALECT選項,根據新的引擎方言強制更新結構描述和子物件。請注意,如果您不使用 FORCE 來更新其他引擎方言,則執行此操作可能會導致查詢錯誤。以下顯示了一個範例:

ALTER VIEW catalog_view FORCE ADD DIALECTAS SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;

以下顯示了如何改變檢視以更新方言:

ALTER VIEW catalog_view UPDATE DIALECT AS SELECT count(*) FROM my_catalog.my_database.source_table;

DESCRIBE VIEW

描述檢視的可用語法:

SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name] – 如果使用者具有描述檢視所需的 AWS Glue 和 AWS Lake Formation 許可,他們可以列出資料欄。以下顯示了用於顯示資料欄的幾個範例命令:

SHOW COLUMNS FROM my_database.source_table; SHOW COLUMNS IN my_database.source_table;

DESCRIBE view_name – 如果使用者具有描述檢視所需的 AWS Glue 和 AWS Lake Formation 許可,他們可以列出檢視中的資料欄及其中繼資料。

DROP VIEW

可用的語法:

DROP VIEW [ IF EXISTS ] view_name

下列範例顯示了 DROP 陳述式,在捨棄檢視之前測試檢視是否存在:

DROP VIEW IF EXISTS catalog_view;

SHOW CREATE VIEW view_name – 顯示用於建立指定檢視的 SQL 陳述式。以下是用於顯示建立資料型錄檢視的範例:

SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view ( net_profit, customer_id, item_id, sold_date) TBLPROPERTIES ( 'transient_lastDdlTime' = '1736267222') SECURITY DEFINER AS SELECT * FROM my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)

SHOW VIEWS

列出型錄中的所有檢視,例如一般檢視、多方言檢視 (MDV) 和不含 Spark 方言的 MDV。可用的語法如下:

SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:

以下顯示了用於顯示檢視的範例命令:

SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';

如需建立和設定資料型錄檢視的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的建置 AWS Glue 資料型錄檢視

查詢 Data Catalog 檢視

建立 Data Catalog 檢視之後,您可以查詢檢視。在 AWS Glue 任務中設定的 IAM 角色必須在 Data Catalog 檢視上具有 Lake Formation SELECT 許可。您不需要授予檢視中參考的基礎資料表存取權。

完成所有設定之後,您可以查詢檢視。例如,您可以執行下列查詢來存取檢視。

SELECT * from my_database.catalog_view LIMIT 10;

限制

使用 Data Catalog 檢視時,請考慮下列限制。

  • 您只能使用 AWS Glue 5.0 及更高版本建立 Data Catalog 檢視。

  • Data Catalog 檢視定義者必須具有對檢視存取的基礎基本資料表的 SELECT 存取權限。如果特定基本資料表對定義者角色施加了任何 Lake Formation 篩選條件,則建立 Data Catalog 檢視會失敗。

  • 基本資料表不得具有 AWS Lake Formation 中的IAMAllowedPrincipals 資料湖許可。如果存在,則錯誤多方言檢視只能參考沒有 IAMAllowedPrincipals 許可的資料表

  • 資料表的 Amazon S3 位置必須註冊為 AWS Lake Formation 資料湖位置。如果未註冊資料表,則會發生 Multi Dialect views may only reference AWS Lake Formation managed tables 錯誤。如需有關如何在 AWS Lake Formation 中註冊 Amazon S3 位置的資訊,請參閱《AWS Lake Formation 開發人員指南》中的註冊 Amazon S3 位置

  • 您只能建立 PROTECTED Data Catalog 檢視。不支援 UNPROTECTED 檢視。

  • 您無法在 Data Catalog 檢視定義中參考另一個 AWS 帳戶中的資料表。您也無法在位於不同區域的相同帳戶中參考資料表。

  • 若要跨帳戶或區域共用資料,整個檢視必須使用 AWS Lake Formation 資源連結跨帳戶和跨區域共用。

  • 不支援使用者定義的函數 (UDF 或 UDAF)。

  • 您無法在 Data Catalog 檢視中參考其他檢視。