pentaho data integration を使ってSalesforceのデータを抽出したり更新したりする話5(upsert)

前回のupdateしてみるからの続き。

★外部IDを使って登録・更新をしてみる場合。

まず、取引先に外部IDのカスタム項目を定義します。

2015-08-31_pentaho49.jpg

次に、Excelに外部IDの列を入れます。
2015-08-31_pentaho48.jpg

Pentahoのデータ変換では、
Excel入力から、Salesforce挿入/更新へ線をつなぎます。
successとエラーはinserやupdateと同様です。

2015-08-31_pentaho47.jpg

肝心のマッピングです。
「比較フィールド更新」に外部IDとなる項目を指定します。
そして、マッピング編集で外部IDの項目とExcelの項目をしっかりマッピングします。
「外部IDを使用」は"N"にしておきます。

2015-08-31_pentaho46.jpg

これで実行すると、既存のデータに対して登録・更新ができます。


SalesforceIDを使って登録・更新してみる場合。
も同じようにできるようです。
ただし、マッピングにIDを入れてありExcelのID列が空文字の場合、登録ではなくエラーとなってしまいます。
そのため、正直IDでは使いづらい。


挿入/更新の注意点としては、登録だったのか更新だったのか?をsuccessのExcelからは判断できそうにありません。
どうしても判断が必要な場合は挿入・更新前にデータをSelectし、データが存在するかどうか判断してからの分岐を行う必要がありそうです。

--------------------------------------------------------------------------------------

pentaho data integration を使ってSalesforceのデータを抽出したり更新したりする話4(update)

前回のinsertしてみるからの続き。

★ExcelのデータをSalesforceへ更新してみる。
まずは取引先のデータを作成して。
2015-08-31_pentaho42.jpg

そのIDをExcelに入れてあげます。
2015-08-31_pentaho43.jpg

このIDに対してupdateをしてみようというのが今回です。

Excel入力からSalesforce更新へ矢印を引きます。
Salesforce更新からsuccess用、ng用ログのExcelを用意するのはinsertのときと同様です。

フィールドのマッピングですが、IDとExcelのSalesforceID列をマッピングしてあげればOKです。
外部IDは"N"を指定します。

2015-08-31_pentaho44.jpg


これで実行してみると、更新されていることが分かります。

2015-08-31_pentaho45.jpg



参照関係の項目については、外部IDを使用することができます。
insertの場合と同様です。
前回のinsertしてみる

--------------------------------------------------------------------------------------

pentaho data integration を使ってSalesforceのデータを抽出したり更新したりする話3(Insert)


★ExcelのデータをSalesforceへ登録してみる。

まずは登録したいデータを用意します。
今回は取引先のデータを下記のように用意。

2015-08-28_pentaho19.jpg


データ変換で「入力」から「Excel入力」を、出力から「Salesforce挿入」をもってきてつなげます。

2015-08-28_pentaho20.jpg


Excel入力についてです。
ファイルタブの「スプレッドシートタイプ(エンジン)」はExcel形式に合わせます。
「ファイルとディレクトリ」に読み込むファイルを指定したあと、「追加」ボタンを押します。
ファイル名のリストにパスが移動します。

2015-08-28_pentaho21.jpg


シートタブでは、使用するシートを選択します。

2015-08-28_pentaho22.jpg

フィールドタブでは、使用する項目を選択することになるのですが、『途中の列は不要だから・・・』と記述を抜かすとデータがずれるので、全列記述したほうがよいです。
そのため、フィールドの取得で一括で拾います。

2015-08-28_pentaho23.jpg


Salesforce入力について。
SalesforcreサービスURL、ユーザ名、パスワードはSelectのときと同様です。
SalesforceサービスURLはデフォルトのものに対し、
本番・開発環境の場合⇒"www"を"login"に変更します。
sandboxの場合⇒"www"を"test"に変更します。
ユーザ名、パスワードは使用しているものを。IP制限によっては、パスワードの後ろにセキュリティトークンも入れる必要があります。

バッチサイズもデータローダの設定と似てますね。200にしておくと無難かと思います。
モジュールは登録対象を。今回は取引先を登録したいのでAccountにします。
SalesforceIDフィールドには、デフォルトのIdのままでよろしいかと。

そして、項目のマッピングですね。
データローダだとSDL作成に該当するところです。
マッピング編集をクリックし、Excel列と、データローダの項目を関連付けさせていきます。

2015-08-28_pentaho24.jpg

こんな感じになります。

2015-08-28_pentaho25.jpg

実行してみると、無事Salesforceに登録されました。

2015-08-28_pentaho26.jpg


★登録成功・失敗のエラーログを出してみる。
出力⇒Microsoft Excel Writer
を2つ用意し、Salesforce挿入から2本つなげます。

線をつなげようとすると、どのようにするか問われるので、ひとつを「Main output of step」、もうひとつを「Error handling of step」とします。

2015-08-28_pentaho27.jpg


2本目を引くときは、ダイアログが出てきますので、「コピー」を選択します。

2015-08-28_pentaho28.jpg


エラーの線の×点印をダブルクリックします。
2015-08-28_pentaho32.jpg

エラーコードや、エラー詳細が格納されるフィールド名を記述します。
エラー詳細はフィールド名を入れておいたほうが、エラー発生時に調査しやすくなると思います。
2015-08-28_pentaho29.jpg

そして、成功・エラーのそれぞれのExcelのファイル名やフィールド項目を設定します。
もちろん、Selectのときと同様、フィールドについては全取得しておくといいかと思います。

2015-08-28_pentaho30.jpg

2015-08-28_pentaho31.jpg


実行してみると、成功、失敗の情報がExcelに出力されます。
今回は成功のみなので、Success側のExcelを見てみると。

2015-08-28_pentaho33.jpg

登録したSalesforceIDが付加され、データローダのSuccessログっぽい感じになりますね。


★参照関係の項目に外部IDで値を設定する。
データローダだと、insert処理の場合は参照関係の項目に対し外部IDで値を設定することはできなかったと思いますが、pentahoのinsertの場合はできるのですね。
フィールドの項目定義にて
「参照先のオブジェクトAPI参照名:外部IDのAPI参照名/リレーション名」
で、外部IDにチェックを入れればできます。

例として、
ホゲオブジェクト(HogeObject__c)に外部ID(HogeExternalID__c)という項目を外部IDで定義してみました。
取引先のカスタム項目にホゲ(Hoge__c)と参照項目を定義。
2015-08-28_pentaho34.jpg

2015-08-28_pentaho35.jpg

ホゲオブジェクトのレコードを1件追加し、外部IDをhoge1としてみました。
2015-08-28_pentaho36.jpg

そしてExcelデータには、ホゲ列を追加して、hoge1と記述。
2015-08-28_pentaho37.jpg

最後にpentahoのフィールド定義を先ほど書いた書き方にしたがって
HogeObject__c:HogeExternalID__c/Hoge__c
とし、「外部IDを使用」にはYを入れます。

2015-08-28_pentaho38.jpg

このようにして実行してみますと、参照項目を外部IDを使って設定できるinsertができたことがわかります。
2015-08-28_pentaho39.jpg


★参照関係の項目にSalesforceIDで値を設定する
外部IDではなく、SalesforceIDを使う場合。
項目のマッピングする場合、カスタム項目だと「__r」となっているので、「__c」と後ほど変換する必要があります。
標準の項目だとIdを後ほど付加する形ですね。

ExcelにSalesforceIDを入力して。
2015-08-28_pentaho40.jpg

マッピングをHoge__cとする。
外部IDは使用しないので"N"です。

2015-08-28_pentaho41.jpg

これで、SalesforceIDを使って参照項目を結ぶことができます。

--------------------------------------------------------------------------------------

pentaho data integration を使ってSalesforceのデータを抽出したり更新したりする話2(Select)

前回の導入してみるからの続き

★Salesforceのデータを抽出(select、Export)してみる。

新規⇒
データ変換
を選択します。
2015-08-26_pentaho05.jpg

タブが開きますので、左側にある
デザイン⇒
入力⇒
Salesforce入力
を選択し、ドラッグ&ドロップでタブ内に放り込みます。そうすると、アイコンが表示されます。
2015-08-26_pentaho06.jpg

2015-08-26_pentaho07.jpg


Salesforce入力をダブルクリックします。
接続タブでは、Salesforce環境・使用するオブジェクト、where条件(From句以降。)、クエリ指定をチェックすればSOQLを直接書くことも可能です。
SalesforceサービスURLはデフォルトのものに対し、
本番・開発環境の場合⇒"www"を"login"に変更します。
sandboxの場合⇒"www"を"test"に変更します。
ユーザ名、パスワードは使用しているものを。IP制限によっては、パスワードの後ろにセキュリティトークンも入れる必要があります。
このあたりはデータローダと同じです。

例では取引先(Account)を検索しようとしています。
そのため、ステップ名を「取引先の検索」としています。
選択クエリーにはwhere条件を入れます。もちろん未入力でもOKです。その場合は全件対象となります。

2015-08-26_pentaho08.jpg

全般タブはあまり使わないかな?

フィールドタブには、接続でSOQLを直接書かなかった場合に使用します。
selectする項目を選択します。
取得するフィールド名(表示ラベル)、列名(API参照名)などを入力していきますが、「フィールドの取得」ボタンを押すと、全フィールド項目を取得できるので、その後取捨選択するとよいかと思います。

2015-08-26_pentaho09.jpg

プレビューを押すと、実際のデータを見ることができます。

2015-08-26_pentaho10.jpg


次に「検索結果をExcelに入れて保存したい。」ということをやってみます。
デザイン⇒
出力⇒
Microsoft Excel Writer
を選択してドラッグ&ドロップ。
そのあと、「取引先の検索」をクリックしShiftを押しながらマウスを「Microsoft Excel Writer」のところへ持っていくと結合線を引くことができます。
なお、「Excel出力」というステップもありますが、こちらはxls形式のみしか使えないので、オススメしません。

2015-08-26_pentaho12.jpg


Microsoft Excel Writer をダブルクリックします。
ファイル&シートタブ。
ファイル名は適当に。拡張子は付加されますのでファイル名に拡張子は入れないようにします。
拡張子はxlsかxlsxを選択可能です。例ではxlsxにしています。
ファイル名に日付を付加するか?などは必要に応じてチェックすればよいかと思います。

2015-08-26_pentaho13.jpg

コンテンツタブ。
自動カラムサイズ調整など使ったことないので、とりあえずデフォルトで。
何も記述しない場合、接続元のフィールド情報を引き継ぎますので、項目を絞り込みしたい場合など事情がある場合を除いては何も入力しないほうがいいかもしれません。
と言いたいところなのですが、出力してみるとなぜかヘッダーが出てこないときがあるので、「フィールドの取得」で取得できるものを全部取得しておきます。

2015-08-26_pentaho14.jpg


実際に実行してみます。
再生マークみたいなものをクリックします。
そのまま実行ってやっていくと、実行結果が表示されます。
2015-08-26_pentaho15.jpg


すべて完了となっているのを見届けたあと、Excelの出力先に指定したフォルダを見てみるとファイルがあるはずなので、中身を確認。

2015-08-26_pentaho18.jpg

こんな感じでSelectできます。


次は登録してみる話です。

--------------------------------------------------------------------------------------

pentaho data integration を使ってSalesforceのデータを抽出したり更新したりする話(導入)

暇を見つけたときに更新・追記していきます。。。


Salesforceのデータローダを使って、データの移行をしたりする場面が多々あります。
そのたびに、Excelを操作して日付型はyyyy-MM-ddにしたりとか、参照関係を結ぶのにSalesforceIDが必要になって、全データをExportしてからVLOOKUPして・・・最後にCSVに変換してっと。
などやっていたりすると、データ量が半端なく多くなってきたとき、Excelの数式処理が遅くなって時には止まっちゃうときもあったりで不満がたまったり。

そんなわけで、データローダに代わるものでデータ移行できないか?と模索してPentahoでやってみようと社内で提案があったので、ちょっと触ってみました。
もっと効率のいい方法があるとは思いますが、とりあえずやってみた方法について、これから簡易に記述していきます。

なお、当方の使用環境は、win7Proです。

★まずはダウンロードする。

Pentahoのコミュニティサイトでdata-integrationのページを開き、Data Integrationをダウンロードします。
URL:http://community.pentaho.com/projects/data-integration/
この記事を書いているときのダウンロードしたファイルはpdi-ce-5.4.0.1-130.zipでした。

2015-08-26_pentaho01.jpg

★spoonを起動してみる。

ダウンロードしたらzipを解凍。
data-integration/spoon.batを起動します。

2015-08-26_pentaho02.jpg


リポジトリうんぬん聞かれますが、とりあえずキャンセルしときます。
そうすると、ようこそ画面が表示されます。

2015-08-26_pentaho03.jpg

2015-08-26_pentaho04.jpg


次回、Selectしてみるに続く

--------------------------------------------------------------------------------------

このブログについて
  • 全記事一覧(時間順)
  • このブログについて
  • 私のプロフィール
  • 当ブログで扱っている動画について
  • 記事違いなコメントのお返事

  • カテゴリー
    twitter
    カレンダー
    07 | 2015/08 | 09
    - - - - - - 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31 - - - - -
    Amazon
    でたらめな当ブログにぴったりな商品を自動で表示するみたいです。



    月別アーカイブ
    プロフィール

    たづみ

    Author:たづみ
    ・1981年生まれの男
    ・もう少し詳細なプロフィールはこちらで

    最新コメント
    アクセスランキング
    [ジャンルランキング]
    日記
    828位
    アクセスランキングを見る>>

    [サブジャンルランキング]
    会社員・OL
    183位
    アクセスランキングを見る>>