# Incremental Behavior Build

Incremental Behavior Build は、ペアレントセグメントの行動テーブルのビルド時間を短縮する機能です。ビルドのたびに行動テーブルの全履歴を再構築する代わりに、直近のデータ範囲（データウィンドウ）だけを再処理します。

行動テーブルは日々増え続けるため、全件の再構築にかかる時間も、データの蓄積とともに長くなります。ビルドで行動テーブルの処理が最も長い工程になると、セグメントに新しいデータが反映されるまでの時間が必要以上に延びます。ビルドで行動テーブルの処理がボトルネックになっている場合に、この機能を使用してください。

この機能はパブリックベータ版です。有効化するには、カスタマーサポートにお問い合わせください。

## 変更される内容

この機能が適用されるのは行動テーブルだけです。customers テーブルと activities テーブルは、差分処理の対象になりません。

## データウィンドウの仕組み

各実行では、行動テーブルのすべての行ではなく、データウィンドウを再処理します。データウィンドウは、ソーステーブルの time カラムの最新値で終わり、そこから設定した日数だけ前の時点で始まります。ウィンドウの長さは、機能を有効にするときに設定します。設定できる範囲は3〜14日で、推奨値は7日です。

ウィンドウは前回のウィンドウと重なります。そのため、遅れて届いたレコードでも、time の値がウィンドウの範囲内にあれば、次の実行で取り込まれます。ウィンドウより古い time の値を持つレコードは、通常の実行では取り込まれません。それらを取り込むには、後述の「過去データを取り込んだ後にフルリフレッシュを実行する」の手順に従ってフルリフレッシュを実行してください。

前回の実行から長期間空いた場合も、ウィンドウは前回のウィンドウの終了時点から始まります。そのため、処理されない時間範囲は生じません。その結果、長期間の停止後の実行では、ウィンドウの長さより多くのデータを処理する場合があります。

## 更新がセグメントに反映される仕組み

実行中は、ウィンドウ内の行を行動テーブルのコピーの中で削除してから、再挿入します。更新が完了するまで、セグメントのクエリは以前のコピーを参照し続けます。更新済みのコピーへの切り替えは一瞬で行われるため、セグメントが一部だけ更新された状態のテーブルを読むことはありません。

## 要件と制限

機能を有効にする前に、対象の行動テーブルごとに次の条件を確認してください。

- テーブルに、各イベントの発生時刻を保持する time カラムがあること。
- 新しく読み込まれる行の time の値が、処理済みの行の値より後であること。
- 過去データの取り込みが完了していること。後から過去データを追加で取り込む場合は、その後でフルリフレッシュを実行してください。


この機能には、次の制限があります。

- 対象は行動テーブルだけです。
- 行動テーブルへの直接の SQL クエリは、この機能の対象外です。


## 機能の有効化と無効化

機能を有効にするには、カスタマーサポートの支援が必要です。カスタマーサポートに次の情報を送ってください。

- 対象オーディエンスの URL
- 機能を適用する行動テーブル（すべての行動テーブルに適用しない場合）
- データウィンドウの長さ（3〜14日）。推奨値は7日です。


機能の利用を停止するには、対象オーディエンスの URL を添えてカスタマーサポートに連絡してください。変更後、オーディエンスのすべての行動テーブルは、全件処理に戻ります。

## 過去データを取り込んだ後にフルリフレッシュを実行する

機能を有効にしたあとで、データウィンドウより古いデータを取り込んだ場合は、対象の行動テーブルのフルリフレッシュを実行してください。フルリフレッシュは、ソースデータのすべてを使って行動テーブルを再構築します。そのため、通常の実行より時間がかかります。また、既存の行を更新した場合や、オーディエンス定義を変更せずにソーステーブルのスキーマを変更した場合も、フルリフレッシュを実行してください。

ペアレントセグメントが生成するシステム生成のワークフローには、この手順を追加しないでください。生成されたエンティティは編集してはならないためです。代わりに、`require>` オペレーターでフルリフレッシュのワークフローを呼び出す新しい Treasure ワークフローを作成してください。

```yaml
+full_refresh:
  require>: behavior_<SOURCE_BEHAVIOR_TABLE>_fullrefresh
  project_name: cdp_audience_<YOUR_AUDIENCE_ID>
```

`<SOURCE_BEHAVIOR_TABLE>` はソースの行動テーブル名に、`<YOUR_AUDIENCE_ID>` はオーディエンスの ID に置き換えてください。実行する前に、プロジェクトで生成されたワークフロー名を確認してください。

## 関連トピック

* [マスターセグメントの使用](/ja/products/customer-data-platform/data-workbench/parent-segments)
* [ペアレントセグメントの作成](/ja/products/customer-data-platform/data-workbench/parent-segments/creating-parent-segments)
* [ペアレントセグメントの更新](/ja/products/customer-data-platform/data-workbench/parent-segments/refreshing-master-segments)
* [ペアレントセグメントワークフロー履歴の表示](/ja/products/customer-data-platform/data-workbench/parent-segments/viewing-master-segment-workflow-history)