[Talend]tSalesforceOutputを利用してSalesforceのデータを更新する

今回はTalendのコンポーネント「tSalesforceOutput」によるデータの更新を紹介したいと思います。
2018.11.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tSalesforceOutput」によるデータの更新を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」、Salesforceのバージョンは「Winter '19」で検証しています。

なお、Salesforceのアカウントが無い場合には、以下から開発者環境を無料で新規作成することができます。

Salesforce Developers

また、Salesforceについての細かい説明については記述しません。

tSalesforceOutputについて

「tSalesforceOutput」を利用するとSalesforceのデータを「INSERT」、「UPDATE」、「UPSERT」、「DELETE」することができます。

「tSalesforceOutput」コンポーネントのTalend Helpページはこちらです。

tSalesforceOutput

では、具体的に以下で解説していきます。

ジョブの説明

「tSalesforceConnection」でSalesforceに接続し、「tSalesforceInput」でデータを取得して「tMap」でデータを更新した後に「tSalesforceOutput」でデータを更新します。

「tSalesforceInput」でのデータ取得までについては以下の記事をご参照ください。今回はこちらと同じ処理を流用してデータを取得します。

[Talend]tSalesforceInputを利用してSalesforceからデータを取得する | DevelopersIO

Salesforceのデータについて

まず最初にSalesforceのデータを確認しておきます。

今回はサンプルとして「取引先」を扱いますので、「取引先」のデータを確認しておきます。

「取引先名」が「United Oil」で始まる取引先が3件ありますが、今回はこの3件のレコードの「取引先 部門」を更新したいと思います。

「tMap」コンポーネントの設定

今回は「tMap」コンポーネントについて細かい解説はしませんが、簡単に設定についてです。

「tMap」コンポーネントのマッピング設定で、データを更新するために「Var」に固定値の「Customer Success」を取引先部門の名前として設定し、出力側の「Site」(取引先 部門)カラムに設定しています。

「tSalesforceOutput」コンポーネントの設定

コンポーネントの設定

コンポーネントにはSalesforceへのデータ出力に関する設定をしていきます。

接続コンポーネント

ここでは設定済みの「tSalesforceConnection」のコンポーネントをプルダウンから指定します。なお、「tSalesforceConnection」コンポーネントを配置していない場合には、「Use this Component」を選択して、ここで直接接続設定をすることもできます。

モジュール名

出力したいSalesforceのオブジェクトのことを指します。今回は出力先オブジェクトとして「取引先」を設定します。

右端の「...」をクリックするとオブジェクト選択ウィンドウが開きますので、上部の「フィルタテキストの入力」の箇所に「取引先」と入力し、「取引先」を選択して「OK」をクリックします。

スキーマ定義

「モジュール名」の設定がおわったらスキーマ定義を開いてみます。すると、自動で該当オブジェクトのスキーマが定義されているのが確認できます。

今回は、「tSalesforceInput」で取得しているスキーマと同じスキーマとしたいと思いますので、画面中央の矢印をクリックしてすべてのカラムを入力スキーマと同じにします。

確認ダイアログが表示されるので「OK」をクリックし、問題ないことを確認して再度「OK」をクリックします。

なお、今回はデータの更新を行いたいのでSalesforceのオブジェクトにおいてキーカラムとなる「Id」カラムは必須となります。

出力のアクション

出力のアクションは「INSERT」、「UPDATE」、「UPSERT」、「DELETE」の4つから選択できます。今回は更新をしたいので「UPDATE」を選択します。

挿入の延長

ここから「詳細設定」です。

英語だと「Extend Insert」(拡張インサート?)オプションになります。このオプションを有効にすると「コミットレベル」オプションが表示され、より細かいINSERTのオプションが利用できるようになります。

NULLを無視

このオプションを有効にするとNULL値を無視してくれるようですが、細かい動作については確認できていません。。

コミットレベル

このオプションの数値の単位でコミットが行われます。デフォルトだと200なので200レコードずつのコミットとなります。

APIコール数を削減したい場合にはこの値を大きくするか、より大量レコードの場合には「tSalesforceOutputBulk」などのコンポーネント利用を検討することをおすすめします。

ログファイル名

エラーログの出力先ファイルパスです。エラーがない場合にはファイルは出力されますが、中身には何も出力されません。

tStatCatcher統計情報

「tStatCatcher」コンポーネントを利用する際に利用するオプションです。今回は無効にしました。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

実際にどのように更新されたか、Salesforce側の画面で確認してみます。

設定したとおり、「取引先 部門」が「Customer Success」に更新されました!

まとめ

以上、「tSalesforceOutput」コンポーネントによるデータの更新の紹介でした。どなたかの参考になれば幸いです。

それでは。