Pentahoでは、Salesforceのデータを挿入したり、更新したりするときに、「Salesforce Insert」「Salesforce Update」「Salesforce Upsert」という箱を使います。
どんなときにどの箱を使えばいいのか、戸惑うときがあるので、ちょっとまとめてみました。
「Salesforce Insert」の使いどころ
すべて新規のレコードとして作成されますので、SalesforceIdはフィールドにマッピングしません。
作成時にレコードにセットしておきたい項目のみマッピングします。
なので、入力データにIdがあったとしても、SalesforceIdにマッピングされていないので、すべて新規レコードとなります。
「Salesforce Update」
SalesforceIdをキーとして更新しますので、フィールドにIdをマッピングします。
そのため、入力データのId項目の値が不正だったり、空だと、更新時にエラーになります。
「Salesforce Upsert」
上記のダイアログのように、「比較フィールド更新」の項目に指定した項目をキーにレコードを更新します。
ここには、ユニークな「外部キー」を指定します。
SalesforceIdも指定できますが、Upsertの場合、Idがnullの場合、Insertしてくれず、INVALID_ID_FIELDになってしまいます。
つまり、IdをキーによろしくUpsertしてくれないということです。
そのため、SalesforceIdでレコードの挿入/更新を行う場合は、下記のように前段でId項目のフィルターを行い、Idがnullの場合はSalesforce Insert、Idが存在している場合はSalesforce Updateを呼ぶように分岐した方が良いと思います。