エクセルで管理しているマスタをSalesfoerceにUpsertする with Pentaho

前回の記事ではPentaho(Spoon)を使って、Salesforceのデータをエクセルにエクスポートしました。

今回は、エクスポートしたデータを加工して、逆にSalesforceにデータをUpsertしてみようと思います。

エクセルのデータをそのままUpsertできれば、マスタ等をエクセルで管理しておき、変更があったらそのままSalesforceにUpsertするといったこともできますので、非常に便利です。

今回、インプットにつかうエクセルは、前回の記事でエクスポートした「取引先」のものを使いますので、前回記事を参考に、エクセルを用意すると、わかりやすいと思います。

 

更新用項目の準備

今回、取引先(Account)のデータをUpsertするにあたり、更新のキーを新たに定義することにしましょう。オブジェクトIDを更新キー(Upsert Key)にすることもできますが、データベースなど、外部のプライマリ・キーをキーにして更新できた方が、メンテナンス性も高まります。

そのため、あらかじめ、取引先に更新用のキーとして「FK_Key__c」という項目を外部キーとして用意しました。外部キーについては、この記事「Salesforceへのデータ移行に必須の外部ID!オブジェクトIDを使わないでデータ参照する方法①」この記事「Salesforceへのデータ移行に必須の外部ID!オブジェクトIDを使わないでデータ参照する方法② 実践編」に詳しく書きましたので、わからない場合は参考にしてください。

 

n00

 

 

Salesforce側の定義を追加したら、エクセル側にも、「取引先FK」という項目を追加しておきます。これが取引先レコードのPKだと考えます。

n0-1

 

 

では、用意ができましたら、これも前回の記事を参考に、Spoonを起動しましょう!

 

エクセル入力の定義

はじめに入力側の定義を行います。「入力」⇒「Excel入力」を中央にドラッグし、ダブルクリックして定義を開きます。

そして「ファイル」タブで定義を行います。タブ名のところに「!ファイル」というびっくりマークがついているのは、まだ定義しないといけない項目が残っているという意味ですね。

はじめに選択するのは、スプレッドシートタイプ(エンジン)です。「Excel 2007 XLSX (Apache POI)」を選択しました。

 

n1

 

 

次に「ファイルとディレクトリ」で対象の取引先をエクスポートしたエクセルファイルを選択し、「追加」ボタンで追加します。

次に「シート」タブに移ります。ここで、画面下部の「シートの取得」ボタンを押すと、ダイアログが開きますので、対象のシートを選択しましょう。今回は「Sheet1」です。

 

n2

 

 

最後に、「フィールド」タブで「フィールドの取得」ボタンを押すと、エクセルのシートにある項目が自動で取得されます。確認して、「OK」ボタンを押しましょう。

 

n3

 

 

Salesforce Upseertの定義

次にSalesforce側のUpsertを定義します。左から「Salesforce Upseert」を選択して中央にドラッグし、その後、Shftを押しながら「エクセル入力」から「Salesforce Upseert」にドラッグして線をつなげます。つなぎ終わったら、「Salesforce Upseert」をダブルクリックして定義を開きます。

「ユーザ名」と「パスワード」を適切にいれて、接続できることを確認します。そしてここがポイントですが、「比較フィールド更新」の項目に、Upsertのキーである、「FK_Key__c」を入力します。

n44

 

その後、「フィールド取得」ボタンを押すと、入力であるエクセルの項目が取得されます。わかりやすくするために、項目を削して、「取引先FK」「取引先名」「取引先 電話」「取引先 Fax」だけとします。

 

n5

 

また、「モジュールフィールド」は対応するSalesforce側の項目を選択しなおします。「外部IDを使用」の項目はすべて「N」にします。これは、外部IDを使用して参照(Lookup)を解決するかという指定なので、今回は関係ないです。

 

n6

 

 

実行

それでは、画面上部の実行ボタンを押下して、実行します。

下記のようにSalesforce側にレコードが追加されていることが確認できましたか?

n7

今回、更新キーには「FK_Key__c」を使用しましたので、オブジェクトIDが異なるほかの組織でも同じようにUpsertすることが可能です。

オブジェクトIDに依存してしまうと厄介なSalesforceのレコード管理ですが、外部IDとETLツールをうまく使うと、手間をかけないで管理できそうですよね。

 



こんな記事も関係あるかも。読んでみてね。

コメントを残す

サブコンテンツ

このページの先頭へ