ETLツール DataSpirder を使って Bカートの会員データを Salesforce に連携:CData JDBC Driver

こんにちは。CDataリードエンジニアの杉本です。

今回は BtoB EC・Web受発注システム Bカートと Salesforce をETLツールの DataSpirder で接続・連携する方法を紹介します。

Bカート とは?

BカートはBtoB EC・Web受発注システムです。BtoBの受発注業務をEC化し、FAX・電話受注で起こりやすい聞き間違いや誤入力などの人為的ミスを防いだり、属人化の解消、作業時間の短縮に繋げることができるクラウドサービスです。

https://bcart.jp/

f:id:sugimomoto:20200115120234p:plain

そのBカート では会員情報や受注情報にアクセスするためのHTTPベースの REST APIを提供しており、本記事ではこのAPIを活用して、ETLツールのDataSpirder経由でSalesforceに会員データを同期する方法を紹介します。

https://api.bcart.jp/

f:id:sugimomoto:20200115120240p:plain

実現イメージ

DataSpirderでは多種多様なコネクタを標準装備していますが、現在Bcartへシームレスに接続できるコネクタは提供されていません。

https://www.hulft.com/software/dataspider/product#anc_02

f:id:sugimomoto:20200206213738p:plain

Web API向けのコネクタを利用することもできますが、各APIに関する知識の習得やページネーションや認証処理を踏まえなければ自由にデータを操作することはできません。

そこで、CData JDBC Driverを使用してこのボトルネックを解消します。

DataSpirderには予めJDBC用のインターフェースが提供されているため、Bカート REST API を CData Driverインターフェースでアクセスできるようにしてしまいます。

f:id:sugimomoto:20200206213745p:plain

これによりユーザーはBカートやSalesforceなど、それぞれ仕様が違うAPIを意識すること無く、DataSpirderなどのETLツールで扱えるようになります。

本記事のシナリオ

本記事では前述の通りBカート上にユーザー登録などで生成された会員情報をSalesforceの取引先担当者へ連携します。

以下のようなデータを50件ほど用意しました。

f:id:sugimomoto:20200206213750p:plain

このデータを以下のSalesforce取引先担当者に連携します。

f:id:sugimomoto:20200206213756p:plain

最終的に出来上がるDataSpirderのフローは以下のイメージです。

f:id:sugimomoto:20200206213803p:plain

実際の操作手順の概要はGIFアニメで記録してみました。

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/CDataBlog/bcart.gif

手順

それでは実際に DataSpirder と Bカート・Salesforce の連携方法を説明します。

Bカート API のアクセストークンの取得

Bカート APIに接続するためには、アクセストークンが必要です。

以下の記事で取得方法を解説していますので、予め取得しておきましょう。

www.cdatablog.jp

REST データ処理用 RSDファイルの作成

次に、Bカート API を CData 各種 REST DeiverがSQLとして解釈できるように設定ファイルを作成します。

以下のGitHubから保存してください。

https://github.com/sugimomoto/CData.REST.Bcart

f:id:sugimomoto:20200115120311p:plain

保存先フォルダは後ほど使用するので「C:\CData_REST\Bcart」といった書き込み可能な任意のフォルダに配置してください。

CData JDBC Driverのインストール

DataSpirder と Bカート API を繋ぐために必要となるCData JDBC REST Driverをインストールします。

まず、以下のURLからCData REST ODBC Driverの30日間の評価版をダウンロードします。ダウンロードの際には、Emailの登録が必要となります。

https://www.cdata.com/jp/drivers/rest/download/jdbc/

f:id:sugimomoto:20200206214116p:plain

ダウンロード後、セットアップを実施します。

また、合わせてSalesforce JDBC Driverも使用していますので、こちらも同様にダウンロード・セットアップを行っておきます。

https://www.cdata.com/jp/drivers/salesforce/download/jdbc/

JDBC Driver の設定

次にDataSpirderでJDBC Driverを利用できるように、JDBC ライブラリファイルをDataSpirderのPluginフォルダに移動します。

必要なファイルは以下の5種類です。

C:\Program Files\CData\CData JDBC Driver for REST 2019J\lib

  • cdata.jdbc.rest.jar
  • cdata.jdbc.rest.lic
  • rssbus.jar

C:\Program Files\CData\CData JDBC Driver for Salesforce 2019J\lib

  • cdata.jdbc.salesforce.jar
  • cdata.jdbc.salesforce.lic

f:id:sugimomoto:20200206214124p:plain

この5種類のファイルをそのまま以下のフォルダにコピーします。

C:\Program Files (x86)\DataSpiderServista\server\plugin\data_processing\modules\jdbc_adapter

f:id:sugimomoto:20200206214129p:plain

最後にDataSpirderのサービスを再起動すれば準備完了です。

f:id:sugimomoto:20200206214135p:plain

DataSpider Studioの起動と新規プロジェクトの作成

それでは、DataSpirderで作業をはじめていきましょう。DataSpirder Studioを起動し、新規プロジェクトを作成します。

f:id:sugimomoto:20200206214140p:plain

任意のプロジェクト名で作成を行ってください。予めスクリプトも作成しておきましょう。

f:id:sugimomoto:20200206214146p:plain

Bカート データ取得処理作成

次に Bカートからデータの取得処理を作成します。右側のツールボックスから「データベース」→「JDBC」→「テーブルの読み取り」を選択し、フロー画面にドラッグ・アンド・ドロップで配置します。

f:id:sugimomoto:20200206214152p:plain

接続先から「追加」を選択し

f:id:sugimomoto:20200206214157p:plain

以下の情報でJDBCの接続情報を作成します。Locationには先程Bカートの接続ファイルを配置したフォルダ、AccessTokenには予め取得したAPIの接続用トークンを指定してください。

  • 名前:Bcart
  • ドライバクラス名:cdata.jdbc.rest.RESTDriver
  • URL:jdbc:rest:GenerateSchemaFiles=None;Location=C:\CData_REST\Bcart;other="AccessToken=XXXXX;";

f:id:sugimomoto:20200206214202p:plain

接続情報を作成後、テーブル一覧から「customers」テーブルを選択します。「接続テスト」をクリックし、接続が問題なければ、「完了」をクリックし、設定終了です。

f:id:sugimomoto:20200206214227p:plain

Salesforce データ書き込み処理作成

続いてSalesforceへの書き込み処理も作成しましょう。

先程と同様に「データベース」→「JDBC」から、今度は「テーブル書き込み」を選択し、ドラッグ・アンド・ドロップでフロー画面に配置します。

f:id:sugimomoto:20200206214232p:plain

先程と同じように接続先から「追加」をクリックし

f:id:sugimomoto:20200206214236p:plain

以下のように接続情報を入力します。Salesforceへの接続にはセキュリティトークンも必要となります。セキュリティトークの取得方法はこちらの記事で詳しく解説しています。

  • 名前:Salesforce
  • ドライバクラス名:cdata.jdbc.salesforce.SalesforceDriver
  • URL:jdbc:salesforce:User=XXXXXX;Password=XXXX;SecurityToken= XXXX;

f:id:sugimomoto:20200206214242p:plain

接続設定完了後、テーブル一覧から「contact」テーブルを選択し、「完了」をクリックします。

f:id:sugimomoto:20200206214247p:plain

マッピング処理の作成

最後にBカートとSalesforceのデータをマッピングするための処理を作成します。

フロー画面からBカートの処理をドラッグ・アンド・ドロップし、Salesforceの書き込み処理に移動させます。

f:id:sugimomoto:20200206214252p:plain

すると、以下のようなフローの作成画面が表示されるので「プロセスフローとデータフローを引く」を選択し「マッピングを追加する」にチェックを入れて、「OK」をクリックします。

f:id:sugimomoto:20200206214257p:plain

以下のようにマッピング処理が作成されるので、ダブルクリックで詳細画面を表示します。

f:id:sugimomoto:20200206214303p:plain

ここでデータの取得元からデータの書き込み先、それぞれのカラムのマッピングをドラッグ・アンド・ドロップで行います。

f:id:sugimomoto:20200206214308p:plain

以下のように必要な項目をマッピングできればOKです。

f:id:sugimomoto:20200206214314p:plain

あとは「Start」と「End」をそれぞれ接続すれば、すべてのフローが完成です。

f:id:sugimomoto:20200206214318p:plain

実行

それでは実際にフローを実行してみましょう。画面上の「▶」ボタンをクリックします。

f:id:sugimomoto:20200206214323p:plain

実行後スクリプトが正常に完了すると、以下のようなメッセージボックスが表示されます。

f:id:sugimomoto:20200206214329p:plain

実際にSalesforceの画面を見ると、正常にデータが登録されていることがわかりました。

f:id:sugimomoto:20200206214333p:plain

今回はシンプルな登録処理を行いましたが、取得対象の条件抽出や条件による更新処理等、DataSpirderを挟むことで様々なデータ連携が実現できるようになります。

おわりに

本記事では DataSpirder をもとに解説しましたが、CData Driver ではDataSpirder以外の多様なETLツールやiPaaSの接続もサポートしています。

以下のURLで各ツールの接続リファレンスを公開していますので、普段使っているツールから是非試してみてください。

https://www.cdata.com/jp/drivers/rest/

f:id:sugimomoto:20200115120402p:plain

トライアル・お問い合わせ

関連コンテンツ