PentahoでのSalesforce Insert,Update,Upsertの使いどころ

Pentahoでは、Salesforceのデータを挿入したり、更新したりするときに、「Salesforce Insert」「Salesforce Update」「Salesforce Upsert」という箱を使います。

どんなときにどの箱を使えばいいのか、戸惑うときがあるので、ちょっとまとめてみました。

「Salesforce Insert」の使いどころ

すべて新規のレコードとして作成されますので、SalesforceIdはフィールドにマッピングしません。

作成時にレコードにセットしておきたい項目のみマッピングします。

なので、入力データにIdがあったとしても、SalesforceIdにマッピングされていないので、すべて新規レコードとなります。

「Salesforce Update」

SalesforceIdをキーとして更新しますので、フィールドにIdをマッピングします。

そのため、入力データのId項目の値が不正だったり、空だと、更新時にエラーになります。

なお、csvファイルからIdを読み込んで更新する場合は、下記の項目「データ型を自動変換」にチェックが入っていると、勝手にId型が変わってしまい、エラー「MALFORMED_ID Error message: カスタムオブジェクト ID: 不正な種別の ID 値: xxx」が出てUpdateできない場合があるので、ハマりどころです。

「Salesforce Upsert」

上記のダイアログのように、「比較フィールド更新」の項目に指定した項目をキーにレコードを更新します。

ここには、ユニークな「外部キー」を指定します。

SalesforceIdも指定できますが、Upsertの場合、Idがnullの場合、Insertしてくれず、INVALID_ID_FIELDになってしまいます。

つまり、IdをキーによろしくUpsertしてくれないということです。

そのため、SalesforceIdでレコードの挿入/更新を行う場合は、下記のように前段でId項目のフィルターを行い、Idがnullの場合はSalesforce Insert、Idが存在している場合はSalesforce Updateを呼ぶように分岐した方が良いと思います。