こんにちは。CData Software Japan リードエンジニアの杉本です。
CSV による連携は昔から活用されている連携パターンの一つですが、最近はAmazon S3 といったクラウドストレージ経由で行いたいという相談も増えてきました。
例えば、国産MAツールのSATORI では「データ提供オプションサービス」として、「DMPデータ」「カスタマーデータ」「アクションデータ」をAmazon S3 経由で提供する機能があります。
https://satorihelp.zendesk.com/hc/ja/articles/360006122473
今回はこのようなAmazon S3 経由で取得できるCSV データをCData Arc を通じてSalesforce に連携する方法を紹介したいと思います。
CData Arc とは?
CData Arc は、CData 製品の中で「自動化/Automate」を担うデータ連携ツールです。「B2B 連携をもっとシンプルに」をコンセプトに、ファイル連携 & DB 連携 & API 連携といったB2B 連携に必要なすべてをノーコード・ローコードでつなぐことができるプラットフォームです。
https://arc.cdata.com/jp/
今回のシナリオ
今回は前述の通り、Amazon S3 へ定期的にアップロードされる顧客データのCSV をSalesforce に取り込みます。
以下のような顧客のCSVデータをSalesforce に取り込みます。
CSVデータは以下のようなcustomer_listフォルダに日付単位(YYYYMMDD)でフォルダが区切られ
そのフォルダそれぞれにCSV ファイルが格納される想定です。
これらのデータをSalesforce のリードとして取り込みます。
Amazon S3 -> Salesforce 連携のサンプル
今回の記事ではより手軽にAmazon S3・Salesforce 連携を始められるようにサンプルとなるCData Arc のフローを用意しました。
以下のファイルをダウンロードして、CData Arcのワークスペースにインポートしてみてください。
https://cdatajwrk.s3.ap-northeast-1.amazonaws.com/arcflow_template/AmazonS3ToSalesforce.arcflow
サンプルフローは以下のような流れで構成されており、ユースケースに応じてカスタマイズすることも可能です。
サンプルフローの使い方
最初にサンプルフローの簡単な使い方を解説します。
サンプルフローではAmazon S3 と Salesforceへの接続情報をそれぞれ入力し、実行スケジュールを指定することで簡単に利用できます。
その上で、利用するデータ構造などに合わせて、チューニングを行ってみてください。
Amazon S3 へのコネクションは起点となるコネクタを選択して、対象となるAmazon S3のバケット名、リージョン、アクセスキー、シークレットキーを指定します。
Salesforce へのコネクションはフローの最初のSalesforce コネクタを開いて「接続」の「+作成」から追加できます。
以下のような画面が立ち上がるので、任意の名前を指定して「接続」をクリックします。すると別タブでSalesforce へのログインが行われ、接続が完了するので「+接続の追加」をクリックします。
各コネクタの使い方、設定について
それではフローに存在する各コネクタの役割、チューニングポイントについて解説していきます。
Amazon S3 からのデータ取得(S3 コネクタ)
最初にAmazon S3 からのデータ取得です。
Amazon S3コネクタではバケット名とプレフィックスを用いてダウンロード対象のフォルダを指定します。
なお、通常はプレフィックスに指定したフォルダ直下のファイルのみ対象としますが、今回は以下のように日付ごとにフォルダが作成され、その中にCSVファイルが保存されていく想定となるので
「高度な設定」タブにある「リモートサブディレクトリを再帰」の設定にチェックを入れて対応します。これでサブディレクトリに保存されているファイルも自動的に読み取るようになります。
S3コネクタは自動的に最新のファイルのみ取得するようになっています。
ダウンロードしたCSVファイルをS-JIS からUTF-8 に変換(Scriptコネクタ)
続いてScript コネクタを用いて、CSVファイルをS-JIS からUTF-8 に変換を行います。これは対象のファイルフォーマットに応じて指定します。
Script は以下のような内容になります。ある程度汎用的に作られているので、必要に応じて利用してください。
CSV ファイルをArc 用のデータに読み取り(CSV コネクタ)
次にCSV コネクタを利用してダウンロードしたCSV データをArc が処理しやすいフォーマットであるXML に変換します。
このときにカラムヘッダーの有無とレコード名を指定しておきましょう。レコード名はXMLのルート要素名となります。通常はファイル名が利用されるので、ここで静的な値に指定しておきます。
Salesforce のリードデータにマッピング(XML Map コネクタ)
CSVのデータを読み込んだら、Salesforce のデータモデルに書き込むためのマッピングをXML Map コネクタで行います。
予めSalesforce コネクタを配置しておくと、自動的にディスティネーションファイルが読み込まれます。あとはそれぞれ任意の項目をマッピングしていきましょう。
ポイントはソースとディスティネーションの繰り返し要素をあわせることです。先程のCSV読み取りのレコード名に指定したItemとSalesforce のレコード名であるLead をつなげます。
また、今回対象とした顧客データでは姓名がスペース区切りで一つの項目にて管理されているので、文字列分解する処理を加えて、それぞれFirstName とLastName の項目に指定しました。
Salesforce のリードデータに書き込み(Salesforce コネクタ)
最後にSalesforce への書き込みです。今回はLead テーブルに対してUpsert を指定しました。
また、Upsert を行う際の判定条件となる項目にはEmail を利用しています。これはもとのCSVのデータに存在するId とSalesforce 上で自動採番されるId が一致しないためです。
実行・スケジュール設定
スケジュールの指定は起点となるコネクタの「オートメーション」タブから行います。
「ダウンロード」にチェックを入れて、任意のダウンロード間隔を指定することで、決まった日時に自動的にAmazon S3上のファイルを探索して、ダウンロードしてくるようになります。
手動で実行する場合は、「アウトプット」タブから「受信」をクリックすることで、対象のAmazon S3 ファイルがダウンロードされてきます。
これで最終的にSalesforce のLead へ以下のようにデータが書き込まれれば成功です。
おわりに
このようにCData Arc を用いることで、Amazon S3 のデータをSalesforce へ簡単に連携することができます。
また、今回はSalesforce を例として紹介しましたが、CData Driver を追加することで、他にもkintone やHubSpot など様々なクラウドサービスとも繋げるようになります。
https://www.cdata.com/jp/drivers/
30日間のトライアルも提供しているので、是非自社のサービスに合わせて利用してみてください。
https://arc.cdata.com/jp/
以下のフォームより、テクニカルサポートに問い合わせすることも可能です。
https://www.cdata.com/jp/support/submit.aspx
関連コンテンツ