

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

# 在 中使用 AWS Glue Data Catalog 檢視 AWS Glue
<a name="catalog-views"></a>

 您可以在 中建立和管理檢視 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 資源的許可](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)。

 Data Catalog 檢視對於下列使用案例很有用：
+  **精細的存取控制** – 您可以建立一個檢視，根據使用者需要的許可來限制資料存取。例如，您可以使用 Data Catalog 中的檢視阻止不在 HR 部門工作的員工查看個人身分識別資訊 (PII)。
+  **完整檢視定義** – 透過在 Data Catalog 中的檢視上套用篩選條件，您可以確保檢視中可用的資料記錄一律是完整的。
+  **增強的安全性** – 用於建立檢視的查詢定義必須是完整的，使得 Data Catalog 檢視較不容易受到惡意執行者的 SQL 命令影響。
+  **簡單資料共用** – 使用跨帳戶資料共用，與其他 AWS 帳戶共用資料而不移動資料 AWS Lake Formation。

## 建立 Data Catalog 檢視
<a name="catalog-creating-view"></a>

 您可以使用 AWS CLI 和使用 Spark SQL 的 AWS Glue ETL 指令碼來建立 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 檢視](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html)。

## 受支援的檢視操作
<a name="catalog-supported-view-operations"></a>

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

 **建立檢視** 

 建立 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;
```

 **描述檢視** 

 描述檢視的可用語法：

 `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)
```

 **顯示檢視** 

 列出目錄中的所有檢視，例如一般檢視、多方言檢視 (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 資料型錄檢視](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html)。

## 查詢 Data Catalog 檢視
<a name="catalog-view-query"></a>

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

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

```
SELECT * from my_database.catalog_view LIMIT 10;
```

## 限制
<a name="catalog-view-limitations"></a>

 使用 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` 錯誤。如需有關如何在 中註冊 Amazon S3 位置的資訊 AWS Lake Formation，請參閱《 AWS Lake Formation 開發人員指南》中的[註冊 Amazon S3 位置](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html)。
+  您只能建立 `PROTECTED` Data Catalog 檢視。不支援 `UNPROTECTED` 檢視。
+  您無法在 Data Catalog 檢視定義中參考另一個 AWS 帳戶中的資料表。您也無法在位於不同區域的相同帳戶中參考資料表。
+  若要跨帳戶或區域共用資料，整個檢視必須使用 AWS Lake Formation 資源連結跨帳戶和跨區域共用。
+  不支援使用者定義的函數 (UDF 或 UDAF)。
+  您無法在 Data Catalog 檢視中參考其他檢視。