TalendでSalesforceのオブジェクトをMySqlに対してSelect/Insertしてみた。

2016.01.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

好物はインフラとフロントエンドのかじわらゆたかです。 前回TalendでSalesforceに接続を行いました。 今回はSalesforceで最初から作成されているオブジェクトからデータを抽出し、 MySQLのテーブルに反映させてみたいと思います。

tSalesforceInput

tSalesforceInput Salesforceのオブジェクトを抽出するコンポーネントになります。 接続情報を個別に設定することもできますし、tSalesforceConnectionの接続情報を用いることも可能です。

今回はtSalesforceConnectionで設定した接続情報を用いて、 Salesforceに最初から作成されているContact(取引先責任者)の情報を抽出してみたいと思います。

tSalesforceConnectionで接続情報を設定しコンポーネントがOKの場合で、 tSalesforceInputにつなげます。 tSalesForceInputでの抽出結果を見たいので、RowのメインをtLogRowにつなげます。 コンポーネント配置_0

tSalesforceInputの設定は既存の接続を使用で、tSalesforceConnectionを選択し、 オブジェクトはコンタクトを選びます。 tSalesforceInput_1

これで実行させると以下の様な結果を抽出することができます。 Result

MySQLへの反映

抽出した結果をMySQLのテーブルに反映したいと思います。 反映用のデータベースとテーブルを作成します。

CREATE DATABASE salesforce;
CREATE TABLE salesforce.contact (
Email text,
Name text
)

tMySQLConnectionに接続情報を設定し配置します。 tMySQLOutputに上記で作成したテーブルに合わせてスキーマを設定します。 tMySQLOutput

tSalesforceとtMySQLOutputの間にデータ変換を行うので、tMapを用いて変換を行います。 tMap

最後にtMySQLCommitを配置します。 すべてのコンポーネントを配置すると以下の様になります。 コンポーネント配置

上記のジョブを動かすと、MySQLに値が反映されたことが確認できます。

mysql> select * from salesforce.contact;
+---------------------------+-------------------+
| Email | Name |
+---------------------------+-------------------+
| rose@edge.com | Rose Gonzalez |
| sean@edge.com | Sean Forbes |
| jrogers@burlington.com | Jack Rogers |
| pat@pyramid.net | Pat Stumuller |
| a_young@dickenson.com | Andy Young |
| barr_tim@grandhotels.com | Tim Barr |
| bond_john@grandhotels.com | John Bond |
| spavlova@uog.com | Stella Pavlova |
| lboyle@uog.com | Lauren Boyle |
| b.levy@expressl&t.net | Babara Levy |
| j.davis@expressl&t.net | Josh Davis |
| jane_gray@uoa.edu | Jane Grey |
| asong@uog.com | Arthur Song |
| ajames@uog.com | Ashley James |
| tripley@uog.com | Tom Ripley |
| ldcruz@uog.com | Liz D'Cruz |
| efrank@genepoint.com | Edna Frank |
| agreen@uog.com | Avi Green |
| NULL | Siddartha Nedaerk |
| NULL | Jake Llorrac |
+---------------------------+-------------------+

まとめ

SalesforceからMySQLのテーブルに対して、データを抽出し反映できたことが確認できました。 今回はMySQLに対して行いましたが、Redshiftにデータを反映させることで、 Salesforceのデータをビックデータ分析基盤のデータソースとして用いることもできそうです。