FivetranでSalesforceをつなぐ時の注意点

最終更新日

Salesforceを使用している企業様が多い中、以下のような問い合わせを受けましたので、回答したいと思います。

<問い合わせ内容>
Salesforceの関数データはFivetranで同期は可能ですか?

結論から言いますと、初回同期は可能です。
しかしFivetranでは推奨されていません。その理由を説明します。

まずFivetranがSalesforceの数式を含むデータを同期する場合には、fivetran_formula テーブルを作成します。

このテーブルには、オブジェクト名、式フィールド名、および結果データの計算に使用される式が含まれています。
数式はSalesforceユーザーが変更できます。これらの変更を追跡するために、
fivetran_formula_historyという名前の別のシステムテーブルを同期します。
このテーブルを使用すると、Fivetranに最初に接続された日付から開始される式フィールドの変更履歴を キャプチャできます。

しかし、これらのテーブルはデフォルトで同期対象から外されています。
同期したい場合には、ユーザーが Fivetran のコネクター画面で同期チェックをONにする必要があります。
なぜ同期対象から外れているかというと、以下のような問題があるからです。

1.数式が変更されても数式フィールドは更新されません
2.参照フィールドは、ターゲットオブジェクトが変更されても更新されません。

まずSalesforceには、数式フィールドと参照フィールドという 2つの概念があります。

問題1から説明します。
” Leads ” というテーブルを次のように作成したとします。

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点の問題を留意して同期するようにしてください。

Yuzuru Seto