哲郎タグ:データローダユーザ会BulkAPICLIqDataLoader先日、Salesforceユーザ会のCustomCloud分科会にて、DataLoaderを取り上げました。多くのユーザ様にご参加頂き、DataLoaderの使用方法や活用に多くの方がご興味を持たれていると実感しました。そこで今回のエントリではDataLoaderを取り上げてみたいと思います。1.DataLoaderとは始めは、そもそもDataLoaderとは何か?というお話です。DataLoaderを既に使っている方は読み飛ばして頂いて結構です。件未満と制限されています。インポートも操作の度に項目のマッピングの指定が必要で、前回と同じ処理を行いたい場合などには手間がかかります。DataLoaderはSalesforceが提供しているアプリケーションです。DataLoaderであればインポート以外の処理も可能な上、500万件までのデータを扱うことが出来、設定の保存やバッチ作成などインポートウィザードでは不可能な様々なことが可能です。メニューを辿ることで、DataLoaderのダウンロード画面が表示されます。DataLoaderは、Salesforceに対し、データの出し入れを行うためのツールです。出し入れ、とはどういうことかというと、データの・Insert(新規作成)・Update(更新)・Upsert(新規作成&更新)・Delete(削除)・Export(出力)といったことができます。Salesforceの標準の画面は様々なカスタマイズが出来、大変便利ではありますが、ニガテな作業に「一括で多数のデータを登録する」というものがあります。DataLoaderはこの部分を補うツールであり、登録したいデータをCSVファイルで用意することで、まとめて投入を行うことができます。操作にちょっとした習熟が必要な点や、アプリケーションをPCにインストールしなければならない点もあり、意外と活用されているユーザは少ないように感じています。使いこなせばSalesforceの活用方法がぐんと広がるツールですので、是非使ってみて頂ければと思います。ちなみに、どうしても画面から一括登録をしたい場合や、DataLoaderのインストールが難しい場合などは、弊社で提供しているSkyVisualEditorが解決できると思います。ご相談くださいませ!2.DataLoaderの使い方DataLoaderをインストールして起動すると、これから何をするかのメニューが表示されます。・Insert(新規作成)・Update(更新)・Upsert(新規作成&更新)・Delete(削除)・Export(出力)のうち、どれを行いたいかをボタンで選ぶことで、次の操作に進むことができます。Export以外の場合は、次に対象データの入ったCSVを選択することになります。1CSVの選択2対象オブジェクトのキー項目の指定3対象オブジェクトからリレーションを持つ別オブジェクトのキーの指定4CSVの各列とSalesforceのオブジェクト上の項目とのマッピング5処理の実行の流れでExport以外の処理が可能です。マッピングをSDL形式というファイルに保存しておくことができます。Map」ボタンからSDLファイルを読み込むことで、次回以降も同じマッピングを再利用が可能です。Exportの場合には、データを出力するCSVファイルの場所と名前を指定するところからスタートします。1エクスポートするオブジェクトと、CSVファイルの場所と名前の指定2エクスポート対象の項目と対象データの抽出条件の設定3処理の実行という手順になります。外部ID直接的なDataLoaderのお話とは少々話が逸れますが、DataLoaderを便利に使いこなすには、外部IDの利用は必須と言っても過言ではありません。取引先と取引先責任者を両方Salesforceに登録したいとしましょう。外部IDが無い場合だと、1取引先データをインポート2インポートした取引先のSalesforceIDをエクスポート3取引先責任者データに所属する取引先のSalesforceIDをマージ4取引先責任者データをインポートという手順を踏む必要があります。4手順に見えますが、3のSalesforceIDを取引先責任者にマージするところではそれなりに手間がかかります。本番組織からSandBox等、別のSalesforce組織へデータを更に移したい場合、Sandboxでは上記2でエクスポートしたSalesforceIDとはまた別のIDが振られるため、3のマージもまたやり直しになります。ここに「取引先コード」という外部ID項目を1つ追加すると、1取引先データをインポート2取引先コード付きの取引先責任者データをインポートというわずか2つの手順でデータのインポートが可能となります。SandBoxへデータを持っていく場合も、同じ取引先コードでそのままデータをインポートできます。いった単位のレコードを扱うとなると、通常モードのDataLoaderでは処理時間も相当かかってしまいます。DataLoaderではSalesforceのバージョンアップに合わせて、Winter'10のバージョン17からBulkAPIモードが追加されています。これは通常最大200件のバッチサイズ(1回のデータ処理単位)を、一気に最大10,000件まで引き上げるもので、実際にはロードしたいデータを、CSVまたはXMLファイルとして一旦Salesforceのサーバ上にアップロードし、サーバ側で分散・高速で処理をする機能です。利用するには、DataLoaderのSettings画面から「BulkAPI」のチェックボックスをONにするだけです。これにより、数倍の高速処理が可能となります。ひとつ、BulkAPIモードのDataLoaderだけが使える機能として物理削除の機能があります。Delete」ボタンが、BulkAPIモードだとクリック可能となります。通常のDeleteで削除したデータは、一旦ごみ箱に入ります。完全に削除されたわけではないので、容量や共有ルールなど負荷をかけている状態です。これに対し、物理削除を行った場合は、対象データはごみ箱に入らずに直接削除されます。便利な機能ですが、「間違えて消しちゃった!!!」という場合にもごみ箱を開いてもどこにもデータは残りませんので、取り扱いには重々注意しましょう。SettingsBulkAPIオプションを前節で説明しましたが、DataLoaderのSettings画面には他にも色々知っておくと役に立つ機能があります。バッチサイズDataLoaderが1回のAPI呼び出しで同時に処理するレコード件数を指定します。通常モード:200件BulkAPIモード:10,000件を最大で指定可能です。処理する件数が多いほど、処理時間を短縮できますが、トリガー等が実装されている場合には、ガバナ制限にも注意が必要です。NULL値上書きUpdate/Upsertを行う際に、CSV上で空欄の値があった場合、通常DataLoaderは既存の値を上書きしません。上書きしたい場合にこちらをONにしましょう。Hostを変更することで本番組織とSandBoxのどちらに接続するかを変更できます。本番:login.salesforce.comSandBox:test.salesforce.comタイムゾーン日付/時間型の項目を扱う時に、タイムゾーンを指定します。Salesforceは内部ではGMTで日付や時間を記録していますので、日本での日付を入れたい場合に、誤ってGMTでデータを投入してしまうと-9時間されて前日の日付になってしまいます。タイムゾーンを指定することで、時差を考慮した日付に自動変換してくれます。日本時間を指定したい場合には「Asia/Tokyo」を指定しましょう。プロキシ設定プロキシ経由でないとインターネットに接続できない環境の方の場合は、プロキシ・サーバのアドレスや認証情報を登録することで、DataLoaderからもプロキシ経由でSalesforceへと接続できます。CLIqとprocess-confDataLoaderは便利なツールですが、一般のエンドユーザが使い方を覚えて、間違いなく運用をするには少々敷居が高いかも知れません。そんな時は上げたいファイルを決まった書式のCSVで保存して、アイコンをダブルクリックするだけでデータを登録できるようなバッチファイルを作成するということもできます。そのためにはCLIqというアプリケーションを使います。(CLIqのダウンロードはこちら)CLIqを使うことで、特定の名称のCSVファイルに対し、2.の1~5の手順を自動化して、ダブルクリックひとつで処理が可能になります。CLIqを起動すると、以下の画面が表示されます。バッチ作成したい処理を選択し、バッチファイル名を入力します。入力が終わったら「Next」ボタンを押して進みましょう。次にSalesforceへのログインを行います。Successful.」と表示されればログイン成功です。「Next」ボタンで次に進みましょう。次に対象のオブジェクトと、利用するのであれば外部ID項目のAPI参照名を入力します。「Verify」ボタンを押すと入力されたオブジェクト名と外部ID項目名がチェックされます。valid」と表示されれば成功です。「Next」ボタンで次に進みましょう。最後に確認画面が表示されます。Files」ボタンを押しましょう。successfully!」と表示されれば、バッチファイルの作成完了です。これでバッチファイルが出来上がります。あれ、でもちょっと待ってください。ここまでの手順の中では項目のマッピングの設定をしていません。CLIqで作成したバッチに対し、項目マッピングのSDLファイルを指定してあげる作業が別途必要になります。それでは作成されたバッチのフォルダを開いてみて下さい。configフォルダの中にprocess-confというファイルがあると思います。メモ帳などのテキストエディタでこのファイルを開いてみましょう。キー「process.mappingFile」のValueにSDLファイルを指定することで、このバッチの実行時に項目マッピングを読み込むことができます。ちなみにSDLファイルの中身はこんな感じです。左側にCSVの列名、右側にSalesforceの項目のAPI参照名を指定します。process-confには他にもDataLoaderのSettings画面で設定可能な各種オプションのタグがあります。代表的なものを以下に挙げますので、自動実行時に適用したい箇所を自由に変更して下さい。読み書きするCSVファイルのパスと名前を指定します。冒頭部分を本番は「www.salesforce.com」、SandBoxは「test.salesforce.com」とします。外部IDを使用する場合にキーを追加し、API参照名を指定して下さい。