

 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="zero-etl-history-mode"></a>

在歷史記錄模式中，您可以設定零 ETL 整合，直接在 Amazon Redshift 中追蹤來源資料表中記錄的每個版本 (包括更新和刪除)。您可以對所有資料執行進階分析，例如執行歷史分析、建置回顧報告、執行趨勢分析，以及將增量更新傳送至以 Amazon Redshift 為基礎建置的下游應用程式。有多種 Amazon Redshift 零 ETL 整合支援歷史記錄模式，包括 Amazon Aurora MySQL、Amazon Aurora PostgreSQL、Amazon RDS for MySQL 和 Amazon DynamoDB。另外也有數種應用程式支援歷史記錄模式，例如 Salesforce、SAP、ServiceNow 和 Zendesk。

您可以從 Amazon Redshift 主控台 ([https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)) 開啟和關閉零 ETL 整合的歷史記錄模式。使用歷史記錄模式追蹤整合來源中已刪除或已修改的記錄。追蹤是在目標 Amazon Redshift 資料倉儲中進行。開啟歷史記錄模式不會影響這些資料表上定期分析查詢的效能。

開啟歷史記錄模式後，您在來源內捨棄的資料表並不會在 Amazon Redshift 中捨棄。資料表會改為顯示 `DroppedSource` 狀態，而您仍然可以查詢這些資料表。您也可以搭配一般 SQL 使用 DROP 和 RENAME 命令。

如果您想要在來源上重複使用相同的資料表名稱，則必須先 DROP 或 RENAME 對應的 `DroppedState` 資料表，才能將其複寫至 Amazon Redshift。務必先完成上述操作，再於來源上建立資料表。

如需使用歷史記錄模式時應考量事項的相關資訊，請參閱 [在目標上使用歷史記錄模式時的考量事項](zero-etl.reqs-lims.md#zero-etl-considerations-history-mode)。

**管理零 ETL 整合的歷史記錄模式**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

1. 從左側導覽窗格選擇**無伺服器**或**佈建叢集**儀表板。然後，選擇**零 ETL 整合**。

1. 選取您要管理的零 ETL 整合，然後選擇**管理歷史記錄模式**。**管理歷史記錄模式**視窗隨即顯示。

1. 若目標資料表是從包含單一來源資料表 (例如 Amazon DynamoDB) 的來源類型複寫而來，則您可以**關閉**或**開啟**該資料表的歷史記錄模式。當零 ETL 整合有多個可能的目標資料表時，您可以**對所有現有和未來的資料表關閉**、**對所有現有和未來的資料表開啟**，或是**管理個別資料表的歷史記錄模式**。建立零 ETL 整合時，預設值為歷史記錄模式 `off`。

   歷史記錄模式為 `on` 時，下列欄會新增至目標資料表，以便追蹤來源中的變更。歷史記錄模式 `on` 會增加每月用量和成本，因為 Amazon Redshift 不會刪除目標資料表中的任何記錄。任何已刪除或變更的來源記錄都會在目標中建立新記錄，導致目標中擁有多個記錄版本的總列數更多。在來源中刪除或修改記錄時，該記錄不會從目標資料表中刪除。您可以藉由刪除非作用中記錄來管理目標資料表。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/zero-etl-history-mode.html)

   您可以藉由篩選欄 `_record_is_active` 為 false 的記錄，從歷史記錄模式資料表中刪除非作用中的記錄。下列 SQL DELETE 命令會從 id 欄小於或等於 100 的資料表中刪除非作用中的記錄。您刪除記錄後，在自動清空刪除執行時，就會回收已刪除記錄的儲存空間。

   ```
   DELETE FROM myschema.mytable where not _record_is_active AND id <= 100;
   ```

   歷史記錄模式為 `off` 時，Amazon Redshift 會複製目標資料庫中包含作用中記錄且沒有新增歷史記錄欄的資料表。Amazon Redshift 會將資料表重新命名為 `{{table-name}}_historical_{{timestamp}}` 以供您使用。如果您不再需要此資料表副本，可以將其捨棄。您可以使用 ALTER TABLE 命令重新命名這些資料表。例如：

   ```
   ALTER TABLE {{[schema-name.]}}{{table-name_historical_timestamp}} RENAME TO {{new_table_name}};
   ```

   如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [ALTER TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html)。

您也可以使用 SQL 命令 CREATE DATABASE 和 ALTER DATABASE 來管理歷史記錄模式。如需如何設定 HISTORY\_MODE 的詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html) 和 [ALTER DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_DATABASE.html)。