

 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/)。

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

# 將資料湖資料表新增至資料共用
<a name="create-datashare-external-views"></a>

透過資料共用，資料*生產者*可以安全地與相同 AWS 帳戶或不同帳戶中的*消費者*共用精細的資料庫物件，例如結構描述和資料表。生產者也可以在不同區域之間共用物件。本主題說明如何將物件從資料湖，特別是從 AWS Glue 資料目錄新增至資料共用。內容涵蓋了兩個使用案例：
+ *將近期繫結視觀表新增至參考資料湖中資料表的資料共用* - 這對取用者來說很方便，因為使用 Lake Formation 等的初步組態 (例如定義外部來源資料的許可) 可能已經完成。另一個好處是，新增至資料共用的檢視可以聯結資料湖中的資料表與 Redshift 原生資料表。
+ *直接從外部結構描述將資料表新增至資料共用* - 這可在不需額外分層或邏輯的情況下，將資料湖的物件提供給取用者。取用者可以查詢資料表，或將資料表與取用者上的資料表聯結。

在您使用 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) 從 Redshift 中的 AWS 資料目錄中參考資料表後，這些案例即適用。 AWS 資料目錄中的任何資料表都可以是來源。

**注意**  
您新增至資料共用的資料湖資料表可以包含向 Lake Formation 註冊的資料表和 AWS Glue 資料目錄資料表。

## 建立外部結構描述與外部資料表
<a name="create-datashare-console-external-prelim"></a>

您可以建立外部結構描述和外部資料表，以便將其新增至以下各節中的資料共用。這些是初步步驟。如果您已完成這些步驟，則可略過此節。

1. 在生產者上，建立外部結構描述以參考儲存在 Amazon S3 中的資料湖資料。外部結構描述參考 AWS Glue Data Catalog。示範的角色和區域為範例：

   ```
   CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG
   DATABASE 'glue_database_name'
   IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role'
   REGION 'us-east-1';
   ```

1. 在外部結構描述中建立資料湖資料表。

   ```
   CREATE EXTERNAL TABLE external_schema_name.sales(
   salesid INTEGER,
   sellerid INTEGER,
   buyerid INTEGER,
   saledate DATE,
   pricepaid DECIMAL(8,2))
   ROW FORMAT delimited
   FIELDS TERMINATED BY '\t'
   STORED AS textfile
   LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';
   ```

   範例包括 `LOCATION`。其形式必須為 `s3://{bucket_name}/{folder}/`，且其中已指定資料夾。資料夾的長度至少須為一個字元。您可以選擇包含子資料夾。若要查看在資料湖中建立資料表的其他範例，請參閱 CREATE EXTERNAL TABLE 的[範例](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE_examples.html)。
**注意**  
只有生產者上的 IAM 角色擁有資料表的 SELECT 存取權時，才支援共用資料表。

## 將參考資料湖資料表的近期繫結視觀表新增至資料共用
<a name="create-datashare-console-external-views-how-to"></a>

當您根據 AWS 資料目錄中的外部結構描述建立資料表，並想要將其新增至資料共用時，最常見的方法是新增參考您建立之資料表的 Redshift 近期繫結檢視，其中包含來自資料湖的資料。下列程序顯示進行的步驟：

1. 建立近期繫結視觀表，以參考您先前建立的外部資料表：

   ```
   CREATE VIEW lbv AS 
   select * from external_schema_name.sales, other_schema.t1
   WITH NO SCHEMA BINDING;
   ```

1. 將檢視結構描述新增至資料共用。這是包含近期繫結視觀表的本機結構描述。

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA public;
   ```

1. 將包含近期繫結視觀表所參考資料表的結構描述新增至資料共用。無論結構描述包含本機資料庫物件或來自資料湖的物件，都必須新增結構描述，這是新增至資料共用的檢視中所參考的任何基礎資料表的必要項。請注意，您必須先新增此結構描述，才能新增近期繫結視觀表。

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name;
   ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
   ```

1. 使用 SQL 命令將檢視新增至資料共用。請注意，資料表名稱包含 schema 字首。

   ```
   ALTER DATASHARE my_datashare ADD TABLE public.lbv;
   ```

1. 確認檢視和結構描述已成功新增至資料共用：

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

1. 取用者管理員會從資料共用建立資料庫，然後將使用權授予取用者使用者。

完成這些步驟後，可存取資料共用檢視的資料庫取用者使用者就可以查詢資料。

## 直接將資料湖資料表新增至資料共用
<a name="create-datashare-console-external-views-add-spectrum"></a>

將外部結構描述中的資料表新增至資料共用的方式，與新增檢視類似。這也適用取用者想要以原始狀態查詢資料湖資料表，或取用者想要將其聯結至取用者資料倉儲中的資料表的情況。以下步驟說明如何使用 SQL 將資料湖資料表新增至資料共用。

1. 依照本主題的第一節所述，建立外部結構描述和外部資料表。

1. 

   探索外部結構描述中的現有資料表，以確認您建立的資料表可用：

   ```
   SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
   ```

1. 將外部結構描述新增至資料共用：

   ```
   ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
   ```

1. 將外部資料表新增至資料共用。請注意，資料表名稱包含 schema 字首：

   ```
   ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
   ```

1. 確認資料表已成功新增至資料共用：

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

   如需更詳細的指示，請參閱[共用 AWS 帳戶中資料的讀取存取權](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)。

1. 在取用者上 (這是接收共用資料的資料庫)，管理員會建立資料共用的關聯，讓使用者可以查詢共用資料表。如需如何執行此步驟的詳細資訊，請參閱[以取用者身分管理其他帳戶的資料共用](manage-datashare-other-console.html)。

管理員完成這些步驟後，取用者上的資料庫使用者就可以編寫查詢，以從共用資料表擷取資料，並將其與取用者上的其他資料表聯結。

## 將資料湖物件新增至資料共用的使用須知
<a name="create-datashare-console-external-views-considerations"></a>

當您使用資料共用中資料湖的資料表和檢視時，有幾點須注意：
+ **使用 記錄 AWS CloudTrail** – 存取透過資料共用共用的資料湖資料表時，資料生產者帳戶可以使用 AWS CloudTrail 日誌進行稽核：
  + **使用日誌資料控制資料存取** - CloudTrail 日誌會記錄有關誰存取共用資料表的詳細資訊，包括 Redshift 資料共用生產者和取用者。識別碼可在 `AssumeRole` CloudTrail 日誌的 `ExternalId` 欄位中取得。資料擁有者可以藉由動作對 IAM 政策中的資料存取設定其他限制。如需透過 政策定義資料存取的詳細資訊，請參閱[存取第三方擁有 AWS 的帳戶](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ **安全和取用者許可** - 對於在 Lake Formation 註冊的資料表，Amazon S3 資源會受到 Lake Formation 保護，並使用 Lake Formation 提供的憑證來提供使用。

## 將資料湖物件新增至資料共用的帳單考量事項
<a name="create-datashare-console-external-views-billing"></a>

以下詳細說明在資料共用中儲存和掃描資料湖物件所產生的成本：
+ 當取用者查詢資料湖中的共用物件時，會向取用者收取掃描費用。
  + 當取用者是佈建叢集時，Redshift 會使用 Redshift Spectrum 掃描 Amazon S3 資料。因此，Spectrum 費用會向取用者帳戶收取。
  + 當取用者是 Amazon Redshift Serverless 工作群組時，Spectrum 不會另外收費。
+ Amazon S3 的儲存和操作費用 (例如列出儲存貯體) 會向擁有每個 Amazon S3 儲存貯體的帳戶收取。

如需有關 Amazon Redshift Serverless 計費的其他詳細資訊，請參閱 [Amazon Redshift Serverless 的計費](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-billing.html)。如需更多計費和定價資訊，請查看 [Amazon Redshift 定價](https://aws.amazon.com/redshift/pricing/)。