OSS のETL/ELT ツールEmbulk のJDBC Plugin を使って、Salesforce Marketing データを簡単にDM に同期する方法。
Embulk は、大量のデータをDB、クラウドデータストア、DWH にロードできるオープンソースETL ツールです。近頃のトレンドでは、1社で複数のオンプレアプリやSaaS を使っており、データ分析にはETL/ELT ツールを使ってデータを丸ごとDB/DWH にロードしてから、分析やビジュアライズをすることが主流になっています。Embulk には、いろいろなプラグインがあり、多様なInput とOutput 処理をサポートしています。この記事では、Embulk のJDBC Input Plugin と CData Drivers for Salesforce Marketing を使って、Salesforce Marketing のデータを簡単にDB にロードします。この例ではロード先のDB にはMySQL を使います。

※製品について詳しい情報をご希望の方は以下からお進みください。
- Salesforce Marketing にほかのBI、ETL、開発ツールから接続したい:Salesforce Marketing データ連携ガイドおよびチュートリアルのリストへ
- Salesforce Marketing Drivers について詳細を知りたい:ドライバー詳細情報ページへ
- ほかのデータソースに連携したい:CData Drivers 一覧へ
- ドライバーの30日の無償トライアル版を使いたい:トライアル版ダウンロードページへ
- 製品の利用やライセンスについて相談したい:sales@cdata.co.jp までメールにてご相談ください。
Embulk でCData JDBC Driver for Salesforce Marketing データをロード
- CData JDBC Driver for Salesforce Marketing をEmbulk と同じマシンにインストールします。
-
以下のパスにJDBC Driver がインストールされます。後ほどこのパスを使います。
C:\Program Files\CData\CData JDBC Driver for Salesforce Marketing 2019J\lib\cdata.jdbc.sfmarketingcloud.jar
- 次に、EmbulkとCData JDBC Driverをつなぎこむための、JDBC Input Plugin をインストールします。
https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-jdbc - 今回はロード先DB としてMySQL を使います。ほかにもSQL Server、PostgreSQL、Google BigQuery などを使うことも可能です。
https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysqlembulk gem install embulk-output-mysql
- config ファイルを作成し、Salesforce Marketing -> MySQL のジョブを作成します。sfmarketingcloud-mysql.yml というファイル名で作成しました。
embulk gem install embulk-input-jdbc
in:
type: jdbc
driver_path: C:\Program Files\CData\CData JDBC Driver for Salesforce Marketing 2019J\lib\cdata.jdbc.sfmarketingcloud.jar
driver_class: cdata.jdbc.sfmarketingcloud.SFMarketingCloudDriver
url: jdbc:sfmarketingcloud:User=myUser;Password=myPassword;InitiateOAuth=REFRESH
table: "Subscriber"
out:
type: mysql
host: localhost
database: DatabaseName
user: UserId
password: UserPassword
table: "Subscriber"
mode: insert
Salesforce Marketing Cloud API への認証
User およびPassword をログインクレデンシャルに設定するか、sandbox アカウントに接続する場合はsandbox ユーザーのクレデンシャルに設定します。
Salesforce Marketing Cloud API への接続
デフォルトでは、本製品は本番環境に接続します。Salesforce Marketing Cloud sandbox アカウントを使用するには、UseSandbox をtrue に設定します。
デフォルトのインスタンスは、Web Services API s7 です。他のインスタンスを使用する場合は、Instance を設定できます。
embulk run sfmarketingcloud-mysql.yml
クエリ条件でフィルタリングしたデータのロード
ちなみに、上記の例ではテーブル名を直接指定しましたが、以下のようにSQL Queryを書いてもいいです。 Where句で作成日や修正日を指定すれば、最新のデータだけを対象にすることも可能です。
in:
type: jdbc
driver_path: C:\Program Files\CData\CData JDBC Driver for Salesforce Marketing 2019J\lib\cdata.jdbc.sfmarketingcloud.jar
driver_class: cdata.jdbc.sfmarketingcloud.SFMarketingCloudDriver
url: jdbc:sfmarketingcloud:User=myUser;Password=myPassword;InitiateOAuth=REFRESH
query: "SELECT Id, Status FROM Subscriber WHERE [RecordId] = 1"
out:
type: mysql
host: localhost
database: DatabaseName
user: UserId
password: UserPassword
table: "Subscriber"
mode: insert
CData JDBC Driver for Salesforce Marketing をEmbulk で使うことで、Salesforce Marketing コネクタとして機能し、簡単にデータを取得して同期することができました。ぜひ、30日の無償評価版 をお試しください。