FivetranでSalesforceをつなぐ時の注意点
Salesforceを使用している企業様が多い中、以下のような問い合わせを受けましたので、回答したいと思います。
<問い合わせ内容>
Salesforceの関数データはFivetranで同期は可能ですか?
結論から言いますと、初回同期は可能です。
しかしFivetranでは推奨されていません。その理由を説明します。
まずFivetranがSalesforceの数式を含むデータを同期する場合には、fivetran_formula テーブルを作成します。
このテーブルには、オブジェクト名、式フィールド名、および結果データの計算に使用される式が含まれています。
数式はSalesforceユーザーが変更できます。これらの変更を追跡するために、
fivetran_formula_historyという名前の別のシステムテーブルを同期します。
このテーブルを使用すると、Fivetranに最初に接続された日付から開始される式フィールドの変更履歴を キャプチャできます。
しかし、これらのテーブルはデフォルトで同期対象から外されています。
同期したい場合には、ユーザーが Fivetran のコネクター画面で同期チェックをONにする必要があります。
なぜ同期対象から外れているかというと、以下のような問題があるからです。
1.数式が変更されても数式フィールドは更新されません
2.参照フィールドは、ターゲットオブジェクトが変更されても更新されません。
まずSalesforceには、数式フィールドと参照フィールドという 2つの概念があります。
問題1から説明します。
” Leads ” というテーブルを次のように作成したとします。
次に数式フィールドと参照フィールドを追加し、それぞれ
値を追加します。
数式フィールド(ISGREAT)
IsGreat = CONTAINS(Name, 'Great')
参照フィールド(ACCOUNTNAME)
AccountName = SELECT Name FROM Account WHERE Id = Lead.AccountId
誰かがSalesforceの数式フィールド(ISGREAT)を以下のように変更し、
新しいLeadを追加するとします。
IsGreat = CONTAINS(Name, 'Amazing')
すると上記のように ID L1 の値が更新されず、数式変更前の値と変更後の
値が混在する状態になります。
これはSalesforceで数式フィールドが変更されても、 Leads テーブル側の
フィールドは更新されていないため、 最終更新日時が更新されず、同期対象にならないからです。
次に問題2の ” 参照フィールドは、ターゲットオブジェクトが変更されても更新されない ” についてです。
Account Nameが格納されているアカウントテーブル側で、 ID L1 に該当するAccount Name を ” FooCorp ” から ” Foo ” に変更したとします。
こちらも Account Name テーブルの最終更新日時は変更されますが、Leads テーブルの L1 フィールドは更新されていないため、最終更新日時が更新されず、同期対象から外れ、更新されません。
それによりデータソース側と Data Ware House 側で値の齟齬が発生してしまいます。
以上のような仕組みのため、初回の同期は良いですが、数式フィールドや参照フィールドの更新の際には SQL で更新をかけた方が良いです。
この点以外には問題点はありませんので、SalesforceをFivetranで同期する際にはこの2点の問題を留意して同期するようにしてください。