DataLoaderを使いこなそう

先日、Salesforceユーザ会のCustomCloud分科会にて、DataLoaderを取り上げました。 大変多くのユーザ様にご参加頂き、DataLoaderの使用方法や活用に多くの方がご興味を持たれていると実感しました。 そこで今回のエントリではDataLoaderを取り上げてみたいと思います。

1.DataLoaderとは

始めは、そもそもDataLoaderとは何か?というお話です。 DataLoaderを既に使っている方は読み飛ばして頂いて結構です。

Salesforceには設定メニューにブラウザベースで動作するインポートウィザードがありますが、こちらはインポート専用で、対応オブジェクトが限られ、件数も50,000 件未満と制限されています。またインポートも操作の度に項目のマッピングの指定が必要で、前回と同じ処理を行いたい場合などには手間がかかります。

DataLoaderはSalesforceが提供しているアプリケーションです。DataLoaderであればインポート以外の処理も可能な上、500万件までのデータを扱うことが出来、設定の保存やバッチ作成などインポートウィザードでは不可能な様々なことが可能です。

入手するには、管理者でSalesforceにログインし、 [設定]→[管理者設定]→[データの管理]→[データローダ] とメニューを辿ることで、DataLoaderのダウンロード画面が表示されます。

download

DataLoaderは、Salesforceに対し、データの出し入れを行うためのツールです。 出し入れ、とはどういうことかというと、データの

・Insert(新規作成)

・Update(更新)

・Upsert(新規作成&更新)

・Delete(削除)

・Export(出力)

といったことができます。 Salesforceの標準の画面は様々なカスタマイズが出来、大変便利ではありますが、ニガテな作業に「一括で多数のデータを登録する」というものがあります。 DataLoaderはこの部分を補うツールであり、登録したいデータをCSVファイルで用意することで、まとめて投入を行うことができます。 ただ、操作にちょっとした習熟が必要な点や、アプリケーションをPCにインストールしなければならない点もあり、意外と活用されているユーザは少ないように感じています。 使いこなせばSalesforceの活用方法がぐんと広がるツールですので、是非使ってみて頂ければと思います。

ちなみに、どうしても画面から一括登録をしたい場合や、DataLoaderのインストールが難しい場合などは、弊社で提供しているSkyVisualEditorが解決できると思います。 是非ご相談くださいませ!

2.DataLoaderの使い方

DataLoaderをインストールして起動すると、これから何をするかのメニューが表示されます。

Welcome

先に挙げた、

・Insert(新規作成)

・Update(更新)

・Upsert(新規作成&更新)

・Delete(削除)

・Export(出力)

のうち、どれを行いたいかをボタンで選ぶことで、次の操作に進むことができます。 Export以外の場合は、次に対象データの入ったCSVを選択することになります。

①CSVの選択

②対象オブジェクトのキー項目の指定

③対象オブジェクトからリレーションを持つ別オブジェクトのキーの指定

④CSVの各列とSalesforceのオブジェクト上の項目とのマッピング

⑤処理の実行

の流れでExport以外の処理が可能です。

④のマッピングについては、毎回設定するのは少々面倒ですので、同じ処理を今後も実行する場合には、 マッピングをSDL形式というファイルに保存しておくことができます。 「Save Mapping」ボタンからファイルを保存しておくと、「Choose an Existing Map」ボタンからSDLファイルを読み込むことで、次回以降も同じマッピングを再利用が可能です。

Exportの場合には、データを出力するCSVファイルの場所と名前を指定するところからスタートします。

①エクスポートするオブジェクトと、CSVファイルの場所と名前の指定

②エクスポート対象の項目と対象データの抽出条件の設定

③処理の実行

という手順になります。

3.DataLoaderの高度な活用

外部ID

直接的なDataLoaderのお話とは少々話が逸れますが、DataLoaderを便利に使いこなすには、外部IDの利用は必須と言っても過言ではありません。 例えば取引先と取引先責任者を両方Salesforceに登録したいとしましょう。

外部IDが無い場合だと、

①取引先データをインポート

②インポートした取引先のSalesforceIDをエクスポート

③取引先責任者データに所属する取引先のSalesforceIDをマージ

④取引先責任者データをインポート

という手順を踏む必要があります。 たった4手順に見えますが、③のSalesforceIDを取引先責任者にマージするところではそれなりに手間がかかります。 しかも本番組織からSandBox等、別のSalesforce組織へデータを更に移したい場合、Sandboxでは上記②でエクスポートしたSalesforceIDとはまた別のIDが振られるため、③のマージもまたやり直しになります。

ここに「取引先コード」という外部ID項目を1つ追加すると、

①取引先データをインポート

②取引先コード付きの取引先責任者データをインポート

というわずか2つの手順でデータのインポートが可能となります。 しかもSandBoxへデータを持っていく場合も、同じ取引先コードでそのままデータをインポートできます。

BulkAPI

DataLoaderは多数のデータをまとめて登録できる便利なツールですが、数万、数十万、数百万といった単位のレコードを扱うとなると、通常モードのDataLoaderでは処理時間も相当かかってしまいます。

DataLoaderではSalesforceのバージョンアップに合わせて、Winter'10のバージョン17からBulkAPIモードが追加されています。 これは通常最大200件のバッチサイズ(1回のデータ処理単位)を、一気に最大10,000件まで引き上げるもので、実際にはロードしたいデータを、CSVまたはXMLファイルとして一旦Salesforceのサーバ上にアップロードし、サーバ側で分散・高速で処理をする機能です。

利用するには、DataLoaderのSettings画面から「BulkAPI」のチェックボックスをONにするだけです。 これにより、数倍の高速処理が可能となります。

もうひとつ、BulkAPIモードのDataLoaderだけが使える機能として物理削除の機能があります。通常モードでは無効となっていた「Hard Delete」ボタンが、BulkAPIモードだとクリック可能となります。 通常のDeleteで削除したデータは、一旦ごみ箱に入ります。まだ完全に削除されたわけではないので、容量や共有ルールなど負荷をかけている状態です。 これに対し、物理削除を行った場合は、対象データはごみ箱に入らずに直接削除されます。

便利な機能ですが、「間違えて消しちゃった!!!」という場合にもごみ箱を開いてもどこにもデータは残りませんので、取り扱いには重々注意しましょう。

Settings

BulkAPIオプションを前節で説明しましたが、DataLoaderのSettings画面には他にも色々知っておくと役に立つ機能があります。

Settings

バッチサイズ

DataLoaderが1回のAPI呼び出しで同時に処理するレコード件数を指定します。

通常モード:200件

BulkAPIモード:10,000件

を最大で指定可能です。 処理する件数が多いほど、処理時間を短縮できますが、トリガー等が実装されている場合には、ガバナ制限にも注意が必要です。

NULL値上書き

Update/Upsertを行う際に、CSV上で空欄の値があった場合、通常DataLoaderは既存の値を上書きしません。上書きしたい場合にこちらをONにしましょう。

接続先

Server Hostを変更することで本番組織とSandBoxのどちらに接続するかを変更できます。

本番:login.salesforce.com

SandBox:test.salesforce.com

タイムゾーン

日付/時間型の項目を扱う時に、タイムゾーンを指定します。 Salesforceは内部ではGMTで日付や時間を記録していますので、日本での日付を入れたい場合に、誤ってGMTでデータを投入してしまうと-9時間されて前日の日付になってしまいます。タイムゾーンを指定することで、時差を考慮した日付に自動変換してくれます。 日本時間を指定したい場合には「Asia/Tokyo」を指定しましょう。

プロキシ設定

プロキシ経由でないとインターネットに接続できない環境の方の場合は、プロキシ・サーバのアドレスや認証情報を登録することで、DataLoaderからもプロキシ経由でSalesforceへと接続できます。

CLIqとprocess-conf

DataLoaderは便利なツールですが、一般のエンドユーザが使い方を覚えて、間違いなく運用をするには少々敷居が高いかも知れません。 そんな時は上げたいファイルを決まった書式のCSVで保存して、アイコンをダブルクリックするだけでデータを登録できるようなバッチファイルを作成するということもできます。 そのためにはCLIqというアプリケーションを使います。(CLIqのダウンロードはこちら

CLIqを使うことで、特定の名称のCSVファイルに対し、2.の①~⑤の手順を自動化して、ダブルクリックひとつで処理が可能になります。 CLIqを起動すると、以下の画面が表示されます。

CLIqStart

バッチ作成したい処理を選択し、バッチファイル名を入力します。入力が終わったら「Next」ボタンを押して進みましょう。 次にSalesforceへのログインを行います。

CLIqLogin

ユーザ名とパスワードを入力し、「Login Successful.」と表示されればログイン成功です。「Next」ボタンで次に進みましょう。 次に対象のオブジェクトと、利用するのであれば外部ID項目のAPI参照名を入力します。

CLIqObjectSelect

「Verify」ボタンを押すと入力されたオブジェクト名と外部ID項目名がチェックされます。「Configuration is valid」と表示されれば成功です。「Next」ボタンで次に進みましょう。 最後に確認画面が表示されます。

CLIqGenerate

Summaryの内容を確認し、問題無ければ「Create Data Loader CLI Files」ボタンを押しましょう。 Resultsに「Files created successfully!」と表示されれば、バッチファイルの作成完了です。

これでバッチファイルが出来上がります。 あれ、でもちょっと待ってください。ここまでの手順の中では項目のマッピングの設定をしていません。 CLIqで作成したバッチに対し、項目マッピングのSDLファイルを指定してあげる作業が別途必要になります。

それでは作成されたバッチのフォルダを開いてみて下さい。configフォルダの中にprocess-confというファイルがあると思います。 メモ帳などのテキストエディタでこのファイルを開いてみましょう。

process-conf

キー「process.mappingFile」のValueにSDLファイルを指定することで、このバッチの実行時に項目マッピングを読み込むことができます。 ちなみにSDLファイルの中身はこんな感じです。

SDL

左側にCSVの列名、右側にSalesforceの項目のAPI参照名を指定します。

process-confには他にもDataLoaderのSettings画面で設定可能な各種オプションのタグがあります。 代表的なものを以下に挙げますので、自動実行時に適用したい箇所を自由に変更して下さい。

dataAccess.name ... 読み書きするCSVファイルのパスと名前を指定します。

sfdc.endpoint ... 接続先のAPIです。冒頭部分を本番は「www.salesforce.com」、SandBoxは「test.salesforce.com」とします。

sfdc.externalIdField ... 外部IDを使用する場合にキーを追加し、API参照名を指定して下さい。

sfdc.loadBatchSize ... バッチサイズ。数字で指定します。

sfdc.insertNulls ... NULL値上書き。trueならON、falseならOFFです。

sfdc.proxy○○ ... プロキシ設定です。

sfdc.useBulkApi ... BulkAPIの利用設定です。trueならON、falseならOFFです。

さて、バッチファイルで自動実行ができるとなると色々出来ることが広がるということに皆さんお気づきでしょうか?

Windowsではタスクスケジューラという機能があって、PC上で指定した日時に指定した実行可能ファイルを実行する機能があります。 これを使ってバッチファイルを定期的に自動実行させることで例えば、

・毎日定期的に特定オブジェクトのバックアップデータをエクスポートさせる

・外部システムからデータ連携用のCSVデータを書き出しておくことで、自動データ連携を実現する

といったことも可能になります。 勿論、DataLoaderで処理が可能なスコープに限定されますが、少々のことであればDataLoaderをちょっと勉強するだけで意外と実現できてしまうものなのです。

DataLoaderじゃ実現できないような複雑な連携処理を行いたい場合には、是非弊社のクラウドデータ連携サービスSkyOnDemandをご検討下さい(笑)

4.Salesforceユーザ会について

さて、ここまでDataLoaderについて色々ご紹介してきましたが、今回のお話を取り上げたユーザ会についてご紹介させて下さい。 Salesforceユーザ会はSalesforceのユーザ同士での交流・情報交換を目的として開催されているもので、以下のように様々な分科会が運営されています。

マーケティング分科会

SalesCloud分科会

ServiceCloud分科会

CustomCloud分科会

Chatter分科会

NPO分科会

ルーキー会

この中で、CustomCloud分科会の2013年度の会長を務めさせて頂いております。 会費は基本無料ですし、分科会の後には懇親会も行われます。 次回以降もSalesforceをより活用していくために有益な様々な情報を参加ユーザの皆さんに提供する場としていきたいと思います。 次回開催は5月を予定していますが、ご興味をお持ちの方は是非足をお運び下さいませ。 皆さんとお会いできるのを楽しみにしています。

ユーザ会登録のお申込み