TalendでSalesforceのオブジェクトをMySqlに対してSelect/Insertしてみた。
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。 前回TalendでSalesforceに接続を行いました。 今回はSalesforceで最初から作成されているオブジェクトからデータを抽出し、 MySQLのテーブルに反映させてみたいと思います。
tSalesforceInput
Salesforceのオブジェクトを抽出するコンポーネントになります。 接続情報を個別に設定することもできますし、tSalesforceConnectionの接続情報を用いることも可能です。
今回はtSalesforceConnectionで設定した接続情報を用いて、 Salesforceに最初から作成されているContact(取引先責任者)の情報を抽出してみたいと思います。
tSalesforceConnectionで接続情報を設定しコンポーネントがOKの場合で、 tSalesforceInputにつなげます。 tSalesForceInputでの抽出結果を見たいので、RowのメインをtLogRowにつなげます。
tSalesforceInputの設定は既存の接続を使用で、tSalesforceConnectionを選択し、 オブジェクトはコンタクトを選びます。
MySQLへの反映
抽出した結果をMySQLのテーブルに反映したいと思います。 反映用のデータベースとテーブルを作成します。
CREATE DATABASE salesforce; CREATE TABLE salesforce.contact ( Email text, Name text )
tMySQLConnectionに接続情報を設定し配置します。 tMySQLOutputに上記で作成したテーブルに合わせてスキーマを設定します。
tSalesforceとtMySQLOutputの間にデータ変換を行うので、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のデータをビックデータ分析基盤のデータソースとして用いることもできそうです。