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

talend

この記事は公開されてから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のデータをビックデータ分析基盤のデータソースとして用いることもできそうです。

AWS Cloud Roadshow 2017 福岡