各製品の資料を入手。
詳細はこちら →ETL ツールのEmbulk を使ってSalesforce Marketing のデータをDB にロードする方法
OSS のETL ツールEmbulk のJDBC Plugin を使って、Salesforce Marketing のデータを簡単にDB に同期する方法をご紹介します。
最終更新日:2023-10-13
この記事で実現できるSalesforce Marketing 連携のシナリオ
こんにちは!リードエンジニアの杉本です。
Embulk は、大量のデータをDB、クラウドデータストア、DWH にロードできるオープンソースETL ツールです。近頃のトレンドでは1社で複数のオンプレアプリやSaaS を使っており、データ分析にはETL ツールを使ってデータを丸ごとDB/DWH にロードしてから、分析や可視化をすることが主流になっています。Embulk にはいろいろなプラグインがあり、多様なInput とOutput 処理をサポートしています。この記事では、Embulk のJDBC Input Plugin と CData Driver for SFMarketingCloud を使って、Salesforce Marketing のデータを簡単にDB にロードする方法をご紹介します。この例ではロード先のDB にはMySQL を使います。
Embulk でSalesforce Marketing のデータをロード
- CData JDBC Driver for SFMarketingCloud をEmbulk と同じマシンにインストールします。CData JDBC ドライバは30日間の無償トライアルが利用できるので、サイドバーからお気軽にダウンロードしてご利用ください。
-
以下のパスにJDBC Driver がインストールされます。後ほどこのパスを使います。
C:\Program Files\CData\CData JDBC Driver for SFMarketingCloud 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インストール用のコマンドはこちら:
embulk gem install embulk-input-jdbc
今回はロード先DB としてMySQL を使います。ほかにもSQL Server、PostgreSQL、Google BigQuery などを使うことも可能です。ロードに必要な以下のプラグインをインストールしましょう。
https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysqlコマンドはこちら。
embulk gem install embulk-output-mysql
- config ファイルを作成し、Salesforce Marketing -> MySQL のジョブを作成します。sfmarketingcloud-mysql.yml というファイル名で、以下の内容で作成しました。
- JDBC URL の内容は、ご利用の環境や資格情報を入力してください。
Salesforce Marketing Cloud API への認証
User およびPassword をログインクレデンシャルに設定するか、sandbox アカウントに接続する場合はsandbox ユーザーのクレデンシャルに設定します。
Salesforce Marketing Cloud API への接続
デフォルトでは、CData 製品は本番環境に接続します。Salesforce Marketing Cloud sandbox アカウントを使用するには、UseSandbox をtrue に設定します。
デフォルトのインスタンスは、Web Services API s7 です。他のインスタンスを使用する場合は、Instance を設定できます。
- テーブル名は取得したいテーブル名を入れます。
- これで準備完了です。あとは「embulk run」で実行するだけです。
- 実行後MySQL Workbenchからテーブルを確認してみると、データが取得できているはずです。
in:
type: jdbc
driver_path: C:\Program Files\CData\CData JDBC Driver for SFMarketingCloud 2025J\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
embulk run sfmarketingcloud-mysql.yml
クエリ条件でフィルタリングしたデータのロード
ちなみに、上記の例ではテーブル名を直接指定しましたが、以下のようにSQL クエリを書いてもいいです。 WHERE 句で作成日や修正日を指定すれば、最新のデータだけを対象にすることも可能です。
in:
type: jdbc
driver_path: C:\Program Files\CData\CData JDBC Driver for SFMarketingCloud 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 SFMarketingCloud をEmbulk で使うことで、Salesforce Marketing と連携して簡単にデータを取得できます。ぜひ、30日の無償評価版をお試しください。