こんにちは。CData Software Japan リードエンジニアの杉本です。
今回は CData Sync V22 の新機能であるHistory Mode の使い方を解説します。
History Mode とは?
CData Sync では特徴的な機能の一つとして差分更新が存在します。
これはもとのデータソースから更新されたデータだけを抽出し、そのデータのみを対象としてデータベースやDWH 上の値を更新する機能す。
https://www.cdata.com/jp/sync/#features
これにより常に必要なデータのみをデータベースやDWH で更新でき、効率的にデータ分析基盤の管理が行なえます。
しかしながら、場合によってはそのデータがどのように更新されたのか? をトラッキングしたい場合があります。
例えばよく相談があるトピックとしては、Salesforce の商談データを分析する時に、受注確度や受注金額がどのように変わったのか?を可視化、追跡したい、というものです。
通常CData Sync でレプリケーションされたDWHやデータベース上のデータは最新の値しか保持しません。そのため「今の商談確度」はわかっても、「過去どのような商談確度の変化があったのか?」みたいな情報はわかりません。
「先月は受注予測金額が良い感じだったのに、なぜか今月は受注予測金額が少ない、受注確度が下がっている気がする」というのは営業チームではよくある話ではないでしょうか。
CData Sync V22 ではこのようなデータの変化をウォッチすることができるように、History Mode という機能が追加されました。
https://cdn.cdata.com/help/ASG/jp/sync/Features.html
これによりレプリケーションタイミングで変化があったデータは過去のデータを残しつつ、新しいデータが積み上がるようになっています。
以下は実際にHistory Mode を有効化してレプリケーションした結果です。
History Modeを有効化すると「_cdatasync_active,_cdatasync_start,_cdatasync_end」という3つのカラムが追加されて、どのデータがアクティブな最新データか? いつ更新されたのか? 最初にレプリケーションされたのはいつか? がわかるようになります。
これにより、「Edge Emergency Generator」のデータの受注確度(Probability)が「60」から「80」に変わっていることがわかります。
それでは実際にHistory Mode を試してみましょう。
History Mode を利用するための条件
History Mode を利用するためにはいくつか条件が存在します。Help の引用では以下の通りになりますが、基本的には「差分チェックが可能なデータソースであること」そして、「既存のテーブルにはマッピングできないこと」を念頭に置いておくと良いでしょう。
・ソーステーブルは差分チェックカラムをサポートしている必要があります。
・差分チェックカラムがタイムスタンプであること。
・差分チェックカラムが疑似カラムではないこと。(疑似カラムはレスポンスに値を持たず、条件としてのみ使用されます。)
・同期先テーブルは存在できません。(Advanced タブのDrop Table オプションを使用して、ヒストリーモードをアクティブにしてテーブルを再作成します。)
またサポートされる連携先のデータベースやDWHは2022年9月現在は以下の通りです。
・SQL Server
・MySQL
・PostgreSQL
・Oracle DB
・Snowflake
・Databricks
・Redshift
設定方法
History Mode の設定は簡単です。ジョブもしくはタスクの設定で「ヒストリーモードを有効化」を指定するだけです。
History Mode を使ってみる
それでは実際にHistory Mode を使ってみましょう。
今回はSalesforce から MySQL へ商談情報(Opportunity)をレプリケーションしてみました。
まず初回のジョブ実行を行ってみます。初回は以下の通り全データ(トータル33件)が取り込まれます。
前述の通りHistory Mode ではどのデータがアクティブな最新データか? いつ更新されたのか? 最初にレプリケーションされたのはいつか? がわかるように「_cdatasync_active」「_cdatasync_start」「_cdatasync_end」の3つの項目が追加された状態でテーブルとデータがレプリケーションされます。
「_cdatasync_active」が現在有効なデータかどうかを識別フラグであり、「1」が有効で「0」が過去のデータ、もしくは削除されたデータを示します。
それではSalesforce の商談情報を更新して再度レプリケーションしてみましょう。商談確度を80%から90%に変更してみます。
これで再度レプリケーションのジョブを実行すると、1件だけレコードが反映されました。
MySQLのデータを見てみると、80%の確度だったデータの「_cdatasync_active」が「0」になり、「_cdatasync_end」に非アクティブ状態となった日付が入力されました。
そして同じ商談名で90%確度の「_cdatasync_active」が「1」のデータが新しく作成されていることがわかります。
データを削除した場合の挙動
データを削除した場合の挙動も確認しておきましょう。
データを1件削除すると、以下のような結果になります。
この状態でデータを確認してみると、以下のように両方非アクティブな状態(_cdatasync_actieが0)になっていることがわかります。
ただしこの機能は「削除をキャプチャ」がサポートされているデータソースのみが有効なので注意しましょう。
おわりに
CData Sync V22 新機能:History Mode の紹介でした。これ以外にも CData Sync V22 では様々な機能が強化されています。
また、使っていて気になった点、よくわからなかった点があれば、お気軽にテクニカルサポートまでお問い合わせください。
https://www.cdata.com/jp/support/submit.aspx
関連コンテンツ