CRM AnalyticsのSync Out for Snowflake機能を使ってSalesforceデータをSnowflakeに格納する
本記事は Snowflake Advent Calendar 2023 の5日目です。
1. はじめに
皆さんの組織では、Salesforceのデータの活用はできていますか?
Salesforceは日々のビジネスにおけるオペレーショナルデータの集合であり、うまく活用できれば、直接的にビジネスオペレーションを改善できる可能性が高い重要なデータです。
ただし、人間が作りだしていくことが多いため、扱うのが難しいという側面もあります。
そこで、本記事ではSalesforceデータの活用という文脈の中で、「CRM Analytics(旧Tableau CRM)」を利用して、SalesforceデータをSnowflakeへ転送するSync Out for Snowflake」[1]についてご紹介いたします。
こちらは、SalesforceとSnowflakeを連携することで、SalesforceからSnowflakeへのゼロETLを行うことができる機能になります。反対の、SnowflakeからSalesforceへのリバースETLの機能については、次回以降でご紹介させください。
2. CRM Analyticsとは
製品サイトでは、CRM Analyticsは下記のように紹介されています。
Salesforce CRMワークフローから離れることなく、状況に応じたインサイトとAIを利用した予測・レコメンデーションを獲得できます。
わかるような、わからないような、、(笑)
筆者なりにまとめると、CRM Analyticsは、Salesforce CRM(SFA)に最も近い部分で、データを活用のサポートをしてくれる製品であり、下記のような特徴があります。
- Salesforce外のデータを利用したダッシュボード作成・データ分析
- コーディング不要のAI、「Einstein」を利用した様々な予測やレコメンデーションの提供
- Salesforceと外部ツールを接続し、Salesforceから外部へのデータ転送、及び、外部からSalesforceへのデータ転送
これらの機能を、Tableauのような別のプラットフォーム上で行うのではなく、Salesforce内で行うことで、よりSalesforceユーザにとって具体的なアクションにつなげやすくなり、ビジネスプロセスに落とし込むという部分を担ってくれます。
3. 環境の準備
3-1. Salesforce(CRM Analytics)
ここからは実際の手順をご紹介します。
今回はCRM Analyticsが利用可能なSalesforce Developer Editionの環境を利用します。
この環境は180日間内にログインをすれば利用期限が延長される[2]ので、思う存分機能を試すことができるためです。(無料トライアルは30日間)
もちろん、無料トライアルを利用しても問題ないですが、今後CRM Analyticsを利用した様々な検証を行う際に、Developer Editionは何かと便利なのでお勧めです。
もちろん、本番の環境をお持ちの方は、開発環境ではなく本番環境にてお試しください。
下記のリンクから必要情報を入力することで取得が可能です。
- Developer Edition
- 無料トライアル
3-2. Snowflake
Snowflakeの無料トライアル環境を利用します。こちらは400ドル相当の使用分が無料で含まれている、30日間のトライアルとなります。
下記のリンクから必要情報を入力することで取得が可能です。
4. Snowflake設定
環境の準備ができたら、まずはSnowflakeにデータベース、スキーマを作成し、Salesforceのデータを保管するための準備をします。
- 画面左上のWorksheets(日本語の場合はワークシート)をクリック
- 画面右上の+をクリック
- 
SQL Worksheetをクリック
- 下記のSQLを張り付け
--ロールを指定(sysadminが使用できるウェアハウスがデフォルトでは存在しないため、accountadminを指定)
use role accountadmin;
--ウェアハウスを指定(デフォルトのウェアハウスを指定)
use warehouse compute_wh;
--データベースを作成(データベース名は任意)
create database salesforce_db;
--スキーマを作成(スキーマ名は任意)
create schema salesforce_scm;
- 全選択Ctrl+Aをして、実行Ctrl+Enterもしくは画面右上の▶をクリック
--


--
5. Salesforce設定
次にSalesforce側の設定をし、作成したスキーマにSnowflakeのデータを転送していきます。
5-1. Snowflakeへデータを出力する機能を有効化
デフォルト設定では機能が有効化されていないため、この設定をしないと後工程のSnowflake 出力コネクタが表示されません。
- 画面右上の歯車マークのボタン設定をクリック
- 画面左上のグローバル検索ボックスにAnalyticsと入力
- 
設定をクリック
- 
Snowflake 出力接続を有効化にチェック
- 
保存をクリック
--

--
5-2. 出力先のSnowflakeを設定
CRM Analyticsの機能を利用するためには、Analytics Studioのアプリケーションへ移動する必要があります。その後、今回はSnowflakeへ出力するための設定を行います。
- 画面左上の点々マークをクリック
- 
Analytics Studioを選択(もし表示されない場合は検索窓に入力)
- 
データマネージャをクリック
- 
接続をクリック
- 
新しい接続をクリック
- 
出力をクリック
- 
Snowflake 出力コネクタをクリック
- 
次へをクリック
- Snowflake設定で設定した名称など、必要な情報を入力
- 
保存してテストをクリック
- 
出力タブと、設定した出力設定が存在すればOK
--






--
5-3. Sync Outの設定
- 
接続をクリック
- 
入力タブ内のSFDC_LOCALにある▼をクリック
- 
Sync Outをクリック
- 
Sync Out を有効化を有効化に変更
- 
Sync Out 対象で設定したSnowflakeへの出力設定を選択
- 
保存をクリック
--


--
5-4. 転送する項目の選択
取引先や取引先責任者などの重要なオブジェクトはもともと接続されていたり、項目が選択されていることがあります。ただし、実際にはそれぞれの組織ごとに利用する項目は異なると思いますので、こちらの設定をして、送付する項目を決定しましょう。
- 
接続をクリック
- 
入力をクリック
- SFDC_LOCALにある▼をクリック
- 
オブジェクトを編集をクリック
- 画面右上の検索窓に取引先もしくはAccountと入力
 ※今回は取引先を選択しているが、異なるオブジェクトでもOK
- Accountの列の右にあるえんぴつマークをクリック
- 送付するカラムにチェック
- 
保存をクリック
--



--
5-5. データ同期の実行
いよいよ最後です。データ同期をしてSnowflakeへデータを転送します。
- 
接続をクリック
- Accountの列の右にある▼をクリック
- 
データ同期を実行をクリック
- 
増分同期を実行もしくは完全同期を実行をクリック
 ※初回はどちらを選択してもテーブルの新規作成となるのでどちらでもOK
--


--
5-6. ジョブの実行状況の確認
転送のジョブの実行時間や結果を確認する方法をご紹介します。
- 
ジョブ監視をクリック
- 
すべてや成功、失敗などのタブ毎に、実行状況や実行時間などが確認可能
--

--
5-7. スケジュール設定、通知設定
本番環境を想定すると、毎日決まった時間に同期する設定や、失敗した場合の通知する設定は非常に重要です。その設定方法をご紹介します。
スケジュール設定
- 
接続をクリック
- 
入力タブ内のSFDC_LOCALにある▼をクリック
- 
スケジュールをクリック
- 
スケジュール基準を設定
- 
保存をクリック
--


--
通知設定
- 
接続をクリック
- 
入力タブ内のSFDC_LOCALにある▼をクリック
- 
通知をクリック
- 
通知する内容を設定
- 
保存をクリック
--


--
6. Snowflakeのテーブル確認
最後に、Snowflake上にテーブルが作成され、SalesforceのデータをSnowflakeに送付することができたのかを確認してみます。
--

--
無事、入ってきていました。これにて完了です。
7. おわりに
今回は、CRM Analyticsを利用して、SalesforceからSnowflakeへのデータ転送ができるSync Out for Snowflakeの実装方法についてご紹介しました。
次回以降で、データエンジニア・アナリティクスエンジニア目線で最もCRM Analyticsが輝くと ”筆者が” 考えているSnowflakeからSalesforceへのリバースETLの実装方法についてもまとめます。
CRM Analyticsはユーザ課金となるので、全社のBIツールとして大きく導入するのではなく、今回ご紹介したようなSnowflakeとの連携のために利用するという小さな始め方も可能です。そのため、Tableauなどの他のBIツールとの共存もできると思います。
本記事が少しでも皆様がCRM Analyticsに興味を持ってくださるきっかけとなれましたら幸いです。
- 
Salesforce ヘルプ「Sync Out for Snowflake」 ↩︎ 
- 
Salesforce ヘルプ「開発者組織の有効期限」 ↩︎ 
- 
CRM Analyticsについて「各種エディションと料金」 ↩︎ 



Discussion