

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# AWS Glue Data Catalog 檢視
<a name="data-catalog-views-overview"></a>

此主題說明如何在 AWS Glue Data Catalog中建立檢視。您可以使用 Data Catalog 中的檢視，存取不同資料來源中使用相同結構描述的資料。

透過在 Data Catalog 中建立檢視，您可以建立單一通用檢視結構描述和中繼資料物件以跨引擎使用，例如 Amazon Athena 和 Amazon EMR Spark。這樣做可讓您跨資料湖和資料倉儲使用相同的視觀表，以符合您的使用案例。Data Catalog 中的視觀表的特殊之處在於它們被歸類為定義者視觀表，其中存取權限由建立視觀表的使用者定義，而不是由查詢視觀表的使用者定義。以下是在 Data Catalog 中建立視觀表的一些使用案例和好處：
+ 建立根據使用者需要的權限來限制資料存取的視觀表。例如，您可使用 Data Catalog 中的視觀表阻止不在 HR 部門工作的員工查看個人身分識別資訊 (PII)。
+ 請確定使用者無法存取不完整的記錄。透過將某些篩選條件套用至 Data Catalog 視觀表，您可確保 Data Catalog 視觀表中的資料記錄始終是完整的。
+ Data Catalog 視觀表具有包含的安全優勢，可確保用於建立視觀表的查詢定義必須完成才能建立視觀表。此安全優勢表示 Data Catalog 中的視觀表不容易受到惡意播放程式的 SQL 命令影響。
+ Data Catalog 中的視觀表支援與一般視觀表相同的優點，例如允許使用者存取視觀表，而無需將基礎資料表提供給使用者。

若要在 Data Catalog 中建立視觀表，您必須具有 [ Spectrum 外部資料表](https://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-tables.html)、[Lake Formation 受管資料共用](https://docs.aws.amazon.com/redshift/latest/dg/what_is_datashare.html#lf_datashare_overview)中包含的物件，或 [Apache Iceberg 資料表](https://docs.aws.amazon.com/redshift/latest/dg/what_is_datashare.html#lf_datashare_overview)。

Data Catalog 視觀表的定義存放在 AWS Glue Data Catalog中。使用 透過資源授予、資料欄授予或標籤型存取控制 AWS Lake Formation 授予存取權。如需有關在 Lake Formation 中授予和撤銷存取權的詳細資訊，請參閱[授予和撤銷 Data Catalog 資源的權限](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)。

當您使用 Amazon Redshift 執行參考此類 AWS Glue Data Catalog 檢視的查詢時，Amazon Redshift 會在記錄有關該查詢的中繼資料時自動遮罩特定系統資料表中的欄位和檢視資料欄。如需詳細資訊，請參閱《Amazon Redshift 管理指南》**中的[安全記錄](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-secure-logging.html)。

## 先決條件
<a name="data-catalog-views-prerequisites"></a>

在 Data Catalog 中建立視觀表之前，請確定您已完成以下先決條件：
+ 確定您的 IAM 角色已定義下列信任政策。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                 "Service": [
                      "glue.amazonaws.com",
                      "lakeformation.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------
+ 您也需要下列傳遞角色政策。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1",
              "Action": [
                  "iam:PassRole"
              ],
              "Effect": "Allow",
              "Resource": "*",
              "Condition": {
                  "StringEquals": {
                      "iam:PassedToService": [ 
                          "glue.amazonaws.com",
                          "lakeformation.amazonaws.com"
                      ]
                  }
              }
          }
      ]
  }
  ```

------
+ 最後，您也需要下列權限。
  + `Glue:GetDatabase`
  + `Glue:GetDatabases`
  + `Glue:CreateTable`
  + `Glue:GetTable`
  + `Glue:UpdateTable`
  + `Glue:DeleteTable`
  + `Glue:GetTables`
  + `Glue:SearchTables`
  + `Glue:BatchGetPartition`
  + `Glue:GetPartitions`
  + `Glue:GetPartition`
  + `Glue:GetTableVersion`
  + `Glue:GetTableVersions`

## 端對端範例
<a name="data-catalog-views-example"></a>

首先，根據您的 Data Catalog 資料庫建立外部結構描述。

```
CREATE EXTERNAL SCHEMA IF NOT EXISTS external_schema FROM DATA CATALOG DATABASE 'external_data_catalog_db' 
IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role';
```

您現在可以建立 Data Catalog 視觀表。

```
CREATE EXTERNAL PROTECTED VIEW external_schema.remote_view 
AS SELECT * FROM external_schema.remote_table;
```

然後，您可以開始查詢您的視觀表。

```
SELECT * FROM external_schema.remote_view;
```

若要取得有關與 Data Catalog 中的視觀表相關之 SQL 命令的更多資訊，請參閱[CREATE EXTERNAL VIEW](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_VIEW.html)、[ALTER EXTERNAL VIEW](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_EXTERNAL_VIEW.html) 和 [DROP EXTERNAL VIEW](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_EXTERNAL_VIEW.html)。

## 考量和限制
<a name="data-catalog-views-considerations"></a>

以下是適用於在 Data Catalog 中建立的視觀表的考量事項和限制。
+ AWS Glue Data Catalog 只有 RA3 佈建叢集或 Redshift Serverless 工作群組才支援檢視。
+ 您無法建立以其他視觀表為基礎的 Data Catalog 視觀表。
+ 在 Data Catalog 視觀表中，您只能有 10 個基本資料表。
+ 視觀表的定義者必須擁有基本資料表的完整 `SELECT GRANTABLE` 權限。
+ 視觀表只能包含 Lake Formation 物件和內建項目。視觀表內不允許使用以下物件。
  + 系統表
  + 使用者定義的函數 (UDF)
  + 不在 Lake Formation 受管資料共用中的 Redshift 資料表、視觀表、具體化視觀表和後期繫結視觀表。
+ 視觀表不能包含巢狀 Redshift Spectrum 表。
+ AWS Glue 檢視基本物件的表示法必須與檢視位於相同的 AWS 帳戶 和 區域。