2022/09/7

Salesforceでデータローダバッチを使用して外部データを自動連携する

 
  

データローダバッチとは?

Salesforceを運用する際、基幹システムのデータを使いたいというシーンは多くあります。 顧客マスタ、売上(販売)データ、商品マスタ、在庫データなどは基幹システムに入っていることが多く、これを最初からSalesforceで入力して管理をしようとするのはかなり無謀です。 販売管理、在庫管理、会計システムなどはそれ専用に特化して作られたシステムであるということ、すでに使い慣れたシステムとなっていることから、特にSalesforce導入の初期段階では「データだけ」を連携するという方法を取られることが多くなります。 もちろん、「データだけ」であってもそれをリアルタイムに同期したいということになるとAPIを介したリアルタイムのデータ同期が必要となるのですが、これをやるにはかなりの開発コストがかかります。 従って、1日~1週間に1回だけ動くバッチプログラムでデータを半自動的に取り込むことになります。

データローダとは?

その前にそもそも「データローダ」とは?という話が必要ですので解説します。 データローダとは、Salesforce社が公式で用意しているデータのインポート&エクスポートのためのツールです。 これを使用することで、Salesforceのデータを入出力できるようになります。 手動でSalesforceに取り込む、ということであればデータローダを使わなくても、Salesforceの機能として用意してあるデータインポートウィザードを使用すれば多くのオブジェクトはインポートが可能です。 しかし、自動でインポートを行う場合はデータローダを使って、正確には自動的にデータローダを動かしてデータをインポートする必要があります。

データローダをバッチで動かす方法

データローダはWindowsではコマンドラインで動かすことが可能です。 通常はGUI画面で動かすのですが、その際も裏ではコマンドラインで動いているのがわかります。 このデータローダをコマンドラインからバッチモードで動かすことで、GUIの画面を介さずにデータローダを動かすことができます。 実際はセキュリティトークンを取得して使うなど、動かすためにそれなりの手続きはありますが、手順通りの設定ができればデータローダを動かすことができます。 運用する手順としては、まずインポートしたいデータファイルを所定のフォルダに入れていただき、Windowsのタスクスケジューラ機能で起動するように設定すると自動的に実行されます。 インポート用のファイルを1日の終わりの作業として所定のフォルダに格納する作業を20時に行うとして、起動時間を毎日23時にしておけば日付が変わるまでに外部データを連携できることになります。

最も大事なのはマッピングファイル

ここまでの流れは、データローダに処理をさせるCSVファイルを所定のフォルダ内に置いておけば、Windowsのスケジューラー機能で自動実行するだけなのでさほど難しくはありません。 ここで難しいのはマッピング作業となります。 マッピング作業とは読み込むCSVファイルの列に対して、Salesforceのどの項目を当てるのかを指定する作業のことです。 Salesforceの項目のAPI名が英語なので、その英語で表記された項目に、読み込むファイルのどの列を関連付けるのかを設定し、そのマッピング情報を設定ファイルとして保存しておく必要があります。 データローダバッチはただファイルを読み込んで処理するだけではなく、マッピングをしたSDLファイル(拡張子:*.sdl)に基づいてインポート処理をしています。

SDLファイルの作り方

上記で出てきたマッピングファイル(SDLファイル)は、データローダのGUIモードで作ることができます。 CSVファイルを読み込んで、データローダでインポートしようとすると、マッピングを手動で設定するか、SDLファイルを読み込むかを選択させられます。 このマッピングを手動で設定して、SDLファイルとして書き出すことができれば、データローダをバッチモードで動作させる時にこのSDLファイルを使うことが可能となります。

データを読み込む際には順番にも注意する

データローダバッチを起動するにあたって、最後に注意をしたい点はファイルを読み込む際の「順番」です。 これがマスタデータをインポートするという場合は順番は問題がないのですが、トランザクションデータを入れる場合は、先にマスタデータをインポートしてから、外部IDを使用してトランザクションデータをインポートする必要があります。 若干難しく感じるかも知れませんが、取引先責任者や商談をインポートしようとする際は、先にリレーションする親の取引先のデータを入れてからにしましょうということです。 この順番を間違えると、取引先のない取引先責任者や商談をインポートさせようとするため、エラーが発生します。 従って、先にインポートするのは取引先で、その取引先には外部IDを入れておきましょう。 取引先責任者や商談は外部IDとして参照させる項目を持っておいて、それを取引先の外部IDとして参照させながらインポートを行います。

データローダバッチを実現する他の方法

データローダバッチは、上記のことをWindowsのスケジューラー機能を利用して行います。データローダをバッチモードで起動し、SDLファイルを読み込ませる形で実行します。 この場合、プログラムを開発する必要はないのですが、プログラムを組んで同じことを実現することも可能です。 よく使われるのはJavaです。 Javaでプログラムを組んでWindowsから実行するという形でデータローダバッチを実現します。

Java等のプログラム実行が良い点

基本的にはJavaプログラムのようなものは作らなくても、上記でご案内した方法を取れば自動的にインポートを実施する仕組みは設定できます。 しかし、Javaプログラムを使用することで、細かな処理を入れることができます。 たとえば基幹システムのデータに都道府県がコードでしか入っていない場合、それを都道府県に変換してSalesforceに入れるというのは、Salesforceだけでやろうとすると大変な作業になります。 また、項目のフォーマット変換を行ったり、特定条件のレコードをインポートから除外したりするようなことはプログラムに処理や判定ロジックを入れないと実行できません。 そのような場合にはJava等でプログラムを組む方が応用性があります。 また複数のCSVファイルを読み込む際も、どのファイルを先に読んで、次にこのファイルを読むといったようなこともプログラムで処理をしますので、自由度も高いです。

プログラムの動き方は同じ

Windowsのスケジューラーでデータローダバッチを使用するのも、Javaプログラムなどを通じてデータローダバッチを使用するのもプログラムの動き方は同じです。 ①所定のフォルダからCSVファイルを読み込む ②マッピングを行う ③データローダバッチを起動する これを行うのに、プログラムの開発を必要とするかどうかが異なる点です。シンプルにできるなら前者が良いですし、細かく色々な処理を入れたいなら後者をお勧めします。

外部データ連携はデータローダバッチで

基幹システムの外部データをSalesforceに自動でインポートするにはデータローダバッチが便利です。 1日1回の更新で事が足りるようであれば尚更です。 この実現のためには、基本的な機能だけで実現する方法と、プログラムを開発して行う方法がありますが、どちらにもメリットとデメリットがあるので、それらをきちんと検討してから取り組みましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】