

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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>

履歴モードを使用すると、ソーステーブル内のレコードのすべてのバージョン (更新と削除を含む) を Amazon Redshift で直接追跡するように、ゼロ ETL 統合を設定できます。履歴分析の実行、ルックバックレポートの構築、トレンド分析の実行、Amazon Redshift 上に構築されたダウンストリームアプリケーションへの増分更新の送信など、すべてのデータに対して高度な分析を実行できます。履歴モードは、Amazon Aurora MySQL、Amazon Aurora PostgreSQL、Amazon RDS for MySQL、Amazon DynamoDB など、複数の Amazon Redshift ゼロ ETL 統合でサポートされています。履歴モードは、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 コマンドを依然として使用することもできます。

ソースで同じテーブル名を再利用する場合は、Amazon Redshift にレプリケートする前に、対応する `DroppedState` テーブルを DROP または RENAME する必要があります。この操作は、ソースにテーブルを作成する前に行ってください。

履歴モードを使用する際の考慮事項については、「[ターゲットで履歴モードを使用する場合の考慮事項](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/ja_jp/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\$1MODE の設定方法の詳細については、「*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)」を参照してください。