# 変更テーブルの操作

ソース エンドポイント テーブルからターゲット エンドポイントの対応するテーブルに変更をレプリケートするだけでなく、ターゲット エンドポイントの対応する変更テーブルに変更をレプリケートすることもできます。このプロセスは、ターゲット テーブルに変更を適用するときに同時に実行されます。変更をターゲットのみにレプリケートするか、変更テーブルに変更を保存するか、またはその両方を行うかを選択できます。詳細については、以下の「[変更テーブルモデルの使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/use_change_table_model.htm#ar_chg_tbls_3080803564_ciheeejg)」 を参照してください。

情報メモ

ソース データを変更*しない*ソースに適用される UPDATE はターゲットには適用されますが、対応する変更テーブルには適用されません。たとえば、ソースの列 A に対する UPDATE 操作が 10 より大きいすべての値を 1 に変更し、列 A のレコードの 1 つが*すでに* 1 である場合、そのレコードの UPDATE は変更テーブルに書き込まれません。

変更テーブルはレプリケートされるテーブルと同じ名前ですが、`__ct` のサフィックスが追加されます。

ソース テーブルから選択された列に加えて、変更テーブルには、操作、トランザクション、タイムスタンプなど、行が表す変更に関する詳細情報を提供する特別なヘッダー列も含まれています。これにより、SQL クエリ言語を使用して、不正行為の検出、傾向分析、ビジネス プロセスのトリガー、災害復旧などの変更イベントのさまざまな分析を実行できるようになります。変更テーブルの読み取りの詳細については、「変更テーブルの読み取り」を参照してください。

## 切り捨て操作の処理

TRUNCATE 操作では、変更テーブルは*切り捨てられません*。代わりに、`operation=TRUNCATE.` を含む追加のレコードがテーブルに追加されます。

実際のターゲット テーブルに関しては、[変更の適用] *および* [変更の保存] の両方のレプリケーション オプションが有効になっている場合、ターゲット テーブルは切り捨てられます。

TRUNCATE 操作を変更テーブルとターゲット テーブルの両方に適用するには (TRUNCATE をサポートするソースの場合):

1. タスク設定の [変更の保存設定] タブで、[DDL オプション] ドロップダウン リストから [変更テーブルに適用] (既定) が選択されていることを確認します。
2. タスク設定の [変更の適用設定] タブで、[ソース テーブルが切り捨てられた場合] ドロップダウン リストから [ターゲット テーブルを切り捨て] (既定) が選択されていることを確認します。

## 変更テーブルモデルの使用

変更テーブルを使用する場合、変更内容を変更テーブルに保存するか、ターゲット テーブルに適用するか、または変更の保存と適用の両方を行うかを決定できます。これは、レプリケーション タスクを定義するときに決定します。この設定の詳細については、「変更の保存設定」を参照してください。

変更の適用と保存の両方を行う場合は、次のことがあてはまります。

* ターゲット テーブルと変更テーブルは同じエンドポイントにある必要がありますが、異なるスキーマを持つことができます。たとえば、変更テーブルにはメタデータ ヘッダーが含まれます。

  スキーマの変更の詳細については、「変更テーブル スキーマの名前変更」を参照してください。

* 変更テーブルに適用された変更は、ソース データベースの対応するトランザクションで実行された変更とまったく同じように処理されます。したがって、 [トランザクションの一貫性を保持] オプションを選択して [トランザクション適用モード] または [バッチ最適化適用] モードを使用すると、変更は単一のトランザクションとして処理されます。

  この例外は、エラーが発生し、どの変更操作がエラーの原因であるかを判断するために、データ タスクが「1 つずつ」適用モードに切り替わる場合です。

* 同じデータ列が適用および保存されますが、変更ヘッダー列は例外で、保存された変更テーブルにのみ追加されます。