概要

Salesforce(セールスフォース)はいまや世界中で利用されているCRM(顧客関係管理)ツールであり、クラウド上で動作するため、導入にあたり専用のサーバー構築といったコストが不要となるサービスです。このようなクラウド上で動作しするソフトウェアサービスをSaaSといいますが、なかでもSalesforceはSaaSの代表的なものの一つではないでしょうか。


Salesforceの強みの一つはこのクラウド上で動作するという点にあり、Salesforceへ登録された顧客情報はクラウドを経由してリアルタイムでアカウントを持つ全社員に共有されます。またSalesforceは単なる顧客情報の管理と共有にとどまらず、その活用によりマーケティング支援や営業支援も行います。


一般的に、このようなSaaSはサービスの保守運用をベンダーが行ってくれる代わりに実装される機能もベンダーが提供するものに制限されます。しかしSalesforceは標準で提供されている豊富な機能に加え、顧客のどのような情報を登録するのか、またその情報をどのように利活用していくかなど自社の事業や戦略に合わせ機能をカスタマイズできる点も魅力です。


Salesforceには登録されたデータを分析するためにそのデータの可視化、エクスポートを行うレポート機能がある程度標準の機能として備わっています。ですが何千、何万という単位のデータをリアルタイムで分析したい場合や、Salesforce以外のサービスで集積しているデータと絡めた高度な分析を行いたい場合は別途DWH(データウェアハウス)へデータを統合、Looker・TableauといったBIツールでデータの可視化・分析を行うという流れが有効ではないでしょうか。そしてこのようなデータ統合に役立つのがETLツールと呼ばれるサービスです。

なお、ETLツールという名称は
E:Extract(抽出)
T:Transform(変換)
L:Load(格納))

の頭文字に由来しています。

ETLについてはこちらの記事で詳しく解説しています。
今回はtrocco®(トロッコ)というデータ分析基盤構築サービスを使い、SalesforceのデータをSnowflakeというDWHへ統合し、TableauというBIツールを用いてデータの可視化を行います。
なお今回データの転送手段として使用するtrocco®は、Salesforceの他にも、様々な広告・CRM・DBなどのデータソースに対応しています。

SalesforceのデータをSnowflakeへ転送

ゴール

今回はSalesforceに登録されたサンプルの顧客データをSnowflakeへ転送し、そのデータをTableauを用いてこのようなグラフに可視化することを目標にします。
また今回の分析ではデータベース、データエンジニアリングに関する専門的な知識がない方でもデータ分析が行えるようほとんどコーディング作業をせずに分析基盤を構築し、またデータの更新についても自動化を目指します。

qiita_salesforce: ダッシュボード 1 - Tableau Online 2022-03-14 17-41-08.png

こんな人におすすめ

  • Salesforceのデータ分析機能に不満を感じている
  • Salesforceに登録したデータの件数が多すぎて分析ができない
  • Salesforceのデータを自動的に可視化する環境を構築したい

1. trocco®での設定

1-0. 事前準備

今回のデータ転送に使用するtrocco®のアカウントが必要になります。
trocco®は現在無料のトライアルを実施しています。事前に申し込みをしてアカウントを作成しておきましょう。
https://trocco.io/lp/index.html
(申し込みの際にこちらの記事を見たという旨を記載していただくとその後のご案内がスムーズに行えます)
またデータ元となるSalesforceのアカウントや、データの転送先となるSnowflakeのアカウント、データの可視化を行うためのTableauのアカウントなども事前にご準備ください。

1-1. 転送元・転送先の決定

trocco®にアクセスして、ダッシュボードから「転送設定を作成」ボタンを押します。

スクリーンショット 2022-03-02 13.25.04.png

転送元と転送先となるツールを選択する画面になります。

スクリーンショット 2022-03-02 13.29.39.png

trocco®は多くのサービスと連携しています。今回は転送元に「Salesforce」、転送先には「Snowflake」をそれぞれ選択し、「この内容で作成」ボタンを押します。

スクリーンショット 2022-03-14 16.42.png

1-2. Salesforceからの転送設定

まずは右上の「接続情報を追加」ボタンを押します。

転送設定の新規作成 | trocco 2022-03-14 17-59-53.png

別のタブでSalesforceへの接続情報を入力する画面が開きます。SalesforceアカウントのユーザーIDやパスワード、trocco®がSalesforceにアクセスするために必要なセキュリティトークンを入力します。

なおセキュリティトークンの作成手順についてはこちらのヘルプが参考になるかもしれません。
転送設定画面に戻り、「接続情報を読み込む」ボタンを押すと右の▽マークから入力した接続情報を読み込めます。
※トップページの「接続情報」タブから事前に接続設定を済ませておくことも可能です。その場合は▽マークからすぐに接続設定を呼び出すことが可能です。
接続情報が読み込めたらオブジェクトを選択します。このように接続したSalesforceアカウントで取得可能なオブジェクトが一覧で表示されるため、コーディング作業をせずにその中から選択するだけで済みます。

スクリーンショット 2022-03-14 16.53.01.png

また取得するデータが文字列であるか、数値であるかといったデータ型の設定についてもtrocco®の型推測機能の結果を使用することで簡単に済ませることが可能です。

スクリーンショット 2022-03-14 16.56.47.png

1-3. Snowflakeへの転送設定

転送元のSalesforceと同じく接続情報の設定をしていきます。Snowflakeについても「接続情報を追加」ボタンから別のタブで接続情報の設定画面を開きます。接続先ホスト名やアカウントのユーザー名やパスワードを入力します。
※トップページの「接続情報」タブから事前に接続設定を済ませておくことも可能です。

Snowflake接続情報の新規作成 | trocco 2022-03-14 17-00-44.png

Salesforceの設定と同様に接続情報を読み込み、ウェアハウス、データベース、スキーマ、テーブルの名前をそれぞれ入力します(事前にSnowflake側でこれらを作成しておく必要があります。)

スクリーンショット 2022-03-14 17.02.48.png

入力が済んだらページ最後の「次のSTEPへ」ボタンを押します。

1-4. データのプレビュー・詳細設定

設定にしたがって転送のレビューが作成されます。

スクリーンショット 2022-03-14 17.06.10.png

プレビュー画面では転送元からどのようにデータが取得されるのかが確認できます。取得したいデータがプレビュー画面に表示されなければ、再度転送元と転送先の設定に戻り、設定を修正します。
今回は特に問題なく取得できているためプレビュー画面下部の「確認画面へ」ボタンを押します。

データプレビュー・詳細設定 | trocco 2022-03-14 17-08-33.png

なおプレビュー画面下部の詳細設定では転送の際に特定のデータをマスキング処理する、転送時刻のカラムを追加するといったデータの加工設定が可能です。

データプレビュー・詳細設定 | trocco 2022-03-14 17-12-42.png

1-5. 確認・適用

転送設定の内容が確認できます。過去に作成した転送設定の内容を編集した際にはこの画面でその差分がハイライト表示され、確認をすることが可能です。
今回は設定の新規作成なので、特に確認することはありません。右下の「保存して適用」ボタンを押します。

転送設定詳細 (Qiitaテスト) - 内容の確認 | trocco 2022-03-14 17-11-46.png

trocco®には既存の転送設定を変更した際、変更後も過去の設定内容の履歴を保存して転送設定の変更によって転送が失敗するようになった際などにその履歴から設定を復元するロールバック機能があります。
trocco®を共有して使用し、チームでデータ分析にあたる場合などは、転送設定の変更についてこの画面で簡単なメモを残しておきましょう。

スクリーンショット 2022-03-07 13.56.40.png

1-6. スケジュール・通知設定

転送設定の詳細設定画面に移動します。まず「転送設定概要」タブでは設定の内容が大まかに確認できます。

スクリーンショット 2022-03-14 17.18.29.png

trocco®にはデータの転送を定期的に自動で行う「スケジュール・トリガー機能」があります。

今回はいちいち人の手でデータを更新しなくともグラフが最新の状態に更新されていくことが目標の一つなので、「スケジュール・トリガー設定」タブを開いて定期的な転送スケジュールの設定を行いましょう。
「スケジュールを追加」ボタンを押すと、設定のモーダルが出てくるので、希望に応じて実行スケジュールを設定し、転送の自動化を行います。(今回は毎日0時に転送を行うよう設定しました。)

転送設定詳細 (Qiitaテスト) - スケジュール・トリガー設定 | trocco 2022-03-14 17-22-15.png
転送設定詳細 (Qiitaテスト) - スケジュール・トリガー設定 | trocco 2022-03-14 17-23-30.png

1-7. データ転送ジョブの実行

設定は以上で終わりです。データの転送は以後自動的に行われますが、今回はこのまま右上の「実行」ボタンから手動で転送を実行します。

転送設定詳細 (Qiitaテスト) - スケジュール・トリガー設定 | trocco 2022-03-14 17-24-57.png

転送の実行に際し、その目的などをメモとして残しておくことができます。特に書くことがなければ再び「実行」ボタンを押します。

新規転送ジョブの実行 | trocco 2022-03-14 17-25-51.png

ジョブが実行されます。

転送ジョブ詳細 | trocco 2022-03-14 17-26-33.png

しばらく待つとジョブが終了します。

転送ジョブ詳細 | trocco 2022-03-14 17-27-17.png

2. Snowflakeの設定

Snowflake側でなにか設定を行う必要はありません。プレビューから転送結果を確認すると、たしかにデータが転送されていることが確認できます。

2022-03-11 3:11pm - Snowflake 2022-03-14 17-30-30.png

3. Tableauでの可視化

最後にTableauでのデータ可視化を行います。まずはトップ画面の「新規」から新しいワークブックを作成しましょう。

スクリーンショット 2022-03-02 14.01.12.png

自動的にデータの接続先を選ぶ画面になるので、コネクタからSnowflakeを選択します。
(先ほど行ったようにホスト名やユーザー名、パスワードの入力が必要です。)

編集 | 新しいワークブック 2022-03-14 17-31-56.png

画面左側でデータを転送したウェアハウス、データセット、スキーマを選び、Tableau側で読み込んだテーブルをドラッグ&ドロップでワークブックに追加します。

編集 | 新しいワークブック 2022-03-14 17-35-00.png

新しいシートに移動します。
画面の左側にはSnowflakeから読み込まれたカラム名がフィールドとして表示されています。これらを行と列に配置し、グラフを作成していきます。右上の「表示設定」には主なグラフが用意されており、これらのグラフを選択することで簡単にグラフを作成可能です。

編集 | 新しいワークブック 2022-03-14 17-36-56.png

同様にしていくつかグラフを作成し、それらをダッシュボードに配置して完成です。

qiita_salesforce: ダッシュボード 1 - Tableau Online 2022-03-14 17-41-08.png

まとめ

ほぼ画面上の設定のみでSalesforceのデータをSnowflakeへと統合し、Tableauを利用した可視化をしてみました。またtrocco®の「スケジュール・トリガー機能」の設定を行ったため、以後はSalesforceに新しく追加されたデータはそのスケジュール設定に従って自動的にSnowflakeへ転送され、また連携するTableauのダッシュボードも自動更新機能によって常に最新の状態に維持されていく、という流れになっています。
今回は30件程度のごく簡単なサンプルのデータを用いた転送を行いましたが、trocco®の活用により何千、何万件、何億という件数のデータをSnowflakeへと統合することでSnowflakeの強みであるデータの高速処理が活かされてきます。

データの連携・整備・運用を効率的に進めていきたいとお考えの方や、プロダクトにご興味のある方はぜひ資料をご請求ください。

hirokazu.kobayashi

慶應義塾大学卒業後、2014年より株式会社リブセンスへ入社。データエンジニアとして同社分析基盤立ち上げをリードする。2017年より現職primeNumberに入社。自社プロダクト「systemN」におけるSpark/Redshift活用等のデータエンジニアリング業務を行うかたわら、データ統合業務における工数削減が課題だと感じ、データ統合を自動化するサービス「trocco®」を立ち上げる。