こんにちは、GRIのシニア分析官のA.K.です。先日、初めてプロジェクトの中で抽出ファイルの増分更新をする機会があり、設定の方法にいろいろ悩みました。
同じ悩みを抱えた方向けに今回は増分更新の設定について、いくつかの更新パターンを想定した検証結果をご共有しようかと思います。
抽出ファイルの増分更新とは?
Tableauの抽出ファイルは2種類の更新方法があります。
- 完全更新:すべてのデータを洗い替えする更新方法
- 増分更新:特定の条件に基づいて、差分のみを更新する方法
データ量が小さい場合には、参照元テーブルの更新パターンを考慮しなくて済むため完全更新をお勧めします。ただデータ量が多い場合には、処理時間を減らすためにも増分更新が適しています。
特にTableau Cloud上で抽出ファイルを更新する場合には、抽出処理は2時間以内に収めないといけないという制約があります。この制約をクリアするために増分更新にせざるを得ない状況などが発生します。
増分更新の設定の種類
増分更新の設定の開き方は下記を参照してください。
リンク:抽出の増分更新を構成する
増分更新は、データの変更差分のみを特定して変更があった箇所だけが更新される仕組みです。この時、変更されたかどうかは特定の列を参照して判断されます。
増分更新には、下記の赤枠箇所で示すように3種類のオプションがあります。

- 「更新する最小日付範囲」を設定する
- 「詳細設定」で設定する
- 最後に追加された行を置き換えます
- 最後に追加された行を置き換えないでください
「①更新する最小日付範囲」を設定した場合、「②詳細設定」は選択ができないです。また「②詳細設定」で設定した場合でも、どちら片方のオプションしか選択できないです。
今回は元データの更新パターンと上記の各オプションの設定によって、抽出ファイルのデータがどのように変化するかをまとめていきます。
検証内容
今回の検証では、元データの更新パターンとして下記の3種類を想定して考えてみます。
条件1:新しいレコードが追加される

条件2:既存のレコードが削除される

条件3:既存のレコードの値が書き換わる

検証結果
①.「更新する最小日付範囲」を設定する
更新する最小日付範囲を1ヵ月として、条件1~3のデータソースで増分更新を行うと、抽出ファイルの中身は下記のように変化します。
条件1:新しいレコードが追加される

条件2:既存のレコードが削除される

条件3:既存のレコードの値が書き換わる

更新する最小範囲が1ヵ月の場合には、
- 最新日から数えて新しいレコードがあれば追加する
- 最新日から直近1ヵ月間分のみ遡及して、データに削除・変更がある場合には該当箇所を更新する
という挙動になりました。
②-1.最後に追加された行を置き換えます
詳細オプションの内、「最後に追加された行を置き換え」を選択した状態で条件1~3のデータソースで増分更新を行うと、抽出ファイルの中身は下記のように変化します。
条件1:新しいレコードが追加される

条件2:既存のレコードが削除される

条件3:既存のレコードの値が書き換わる

「最後に追加された行を置き換え」のオプションでは、最新の行のみを対象とするため、今回の条件設定では、更新する最小日付範囲を1ヵ月の場合と全く同じ挙動となりました。
②-2.最後に追加された行を置き換えないでください
残りのオプションである「最後に追加された行を置き換えないでください」を選択した状態で条件1~3のデータソースで増分更新を行うと、抽出ファイルの中身は下記のように変化します。
条件1:新しいレコードが追加される

条件2:既存のレコードが削除される

条件3:既存のレコードの値が書き換わる

「最後に追加された行を置き換えないでください」のオプションでは、新しく追加されたデータのインサートのみ行われる挙動となりました。
検証結果まとめ
上記の検証結果に加えて、データソースの状態と各オプションの設定を細かく変更することで、下記の挙動となることが分かりました。
Tableau Cloud上での運用を考える上では抽出ファイルを作るためのデータソースの更新パターンと増分更新の設定による更新パターンが一致している必要があります。非常に細かい内容ではありますが、今回の検証結果が少しでも参考になれば幸いです。