Tableau CRM Sync Outを使ってSalesforceのデータをSnowflakeに統合する
Tableau CRM Sync Outを使ってSalesforceのデータをSnowflakeに統合する
Tableauでプリセールスエンジニアをしている @rsugimura17 です。今回はSalesforce Spring '21でリリースされたTableau CRM SyncOutによるSalesforceデータとSnowfalkeの統合機能の話をさせていただこうと思います。
Tableau CRMとは?
Salesforceプラットフォーム上でデータの保管、加工、分析が行えるクラウドの分析アプリケーションです。2020年にEinstein Anayticsという名称からTableau CRMに名称が変更されています。Amazon RDS、Amazon Redshift、Azure SQL Database、Google BigQueryなどクラウド系DBのコネクターを持ち、Salesforceデータ+aで分析アプリケーションを構築できます。特徴は、データ可視化・分析の機能だけでなく、ユーザーがGUIで機械学習を行える予測機能も利用することができます。
Snowflakeとは?
クラウド上で構築されているSaaSのデータプラットフォームです。大量のデータを取り込んだり、保管したり、加工したりするために使われるデータウェアハウスです。比較されるサービスは、Amazon Redshift、Google BigQuery、Azure Synapse Analyticsなどが挙げられると思います。特徴は、AWS、 GCP、Azureのいずれのリージョンにおいても利用することができます。
Salesforceデータの分析手段
Salesforceで使える分析手段の利用を想定した時に、一般的に3つの方法があると考えられます。
Salesforce標準のレポート・ダッシュボード
Salesforceに標準機能として提供されたレポート、ダッシュボード機能を使ってレポーティングをすることができます。操作や作成が簡単で教育コストが低いです。しかし、グラフ表現は限定的で複数のグラフをクリックひとつで連動させることはできません。
Salesforceコネクターを使ったTableauやTableau CRMの分析
Salesforceのデータを多彩なグラフ表現や複数のグラフをクリックひとつで連動させながら分析することができます。CRMユーザーに可視化を展開し、Salesforceプラットフォームに分析アプリケーションを構築してCRMユーザーの生産性向上を目的とするならTableau CRMが選択肢になります。CRMユーザーに限らず、組織全体に分析プラットフォームを構築、データロケーションの柔軟性(AWS、Azure、GCP)を求めるなら、Tableauという棲み分けになるかと思います。
DWHを使ったTableauやTableau CRMの利用
上記のように、SalesforceデータをTableauを使い即座に分析を行うことができますが、外部データも含めた億件レコードを超えるデータを扱う場合はDWHが必要になります。例えば、Salesforceデータに加えて、Webデータを統合して顧客の関心、動向から次の購入機会を探りたい場合があります。また、カスタマーサポートのデータを統合して顧客が商品を導入してからの満足度を把握したい場合もあります。
この記事では、3つ目のSalesforceデータをDWHサービスのSnowflakeに格納し、TableauやTableau CRMを利用するケースを想定しています。
(画像はSnowflake公式サイトから引用)
Tableau CRM SyncOut によるSalesforceデータとSnowflakeの統合機能の便利なところ
ここからが本題です。Salesforce Spring '21でリリースされたTableau CRM SyncOutを使って、よかった点をいくつか紹介していきます。
SyncOut
Salesforceデータは、Salesforceプラットフォームに構築された分析アプリケーションTableau CRMのデータストアにスケジュールで同期しておくことができます。さらに、Tableau CRM SyncOutは、Salesforceデータの同期イベントをフックに、データを自動でSnowflakeに取り込んでくれるしくみです。ユーザーは、サードパーティのETLを自前で用意する必要がなく、Snowflakeのストレージに格納され、すぐにクエリできるようになります。
データ接続モード
接続モードの中から、完全同期、定期的な完全同期、増分同期から選択することができ、SalesforceオブジェクトによってSyncOutさせる方法を選ぶことができます。
Snowflake上のターゲットテーブルの作成が不要
Snowflake上にCREATE TABLE文でテーブル作成やカラム定義を作成せずに、Tableau CRM上のSalesforceオブジェクトのテーブルを作成してくれます。新たにSalesforceオブジェクトをSnowflakeに取り込みたい場合に事前にテーブルを作成しておく必要がないため、Tableau CRM上のクリック作業のみでSnowflakeにデータを取り込むことができ、すぐにクエリできるようになります。
Tableau CRM SyncOutの利用手順
(1) Snowflakeのオブジェクト作成
SnowflakeとSync Outを設定するには、Snowflakeアカウントで構成された次のSnowflakeオブジェクトを用意する必要があります。
- Salesforceデータに使用されるデータベースとスキーマ
- Salesforceデータをロードするためのウェアハウス(コンピュートリソース)
- ウェアハウスの使用許可とデータベース、スキーマの権限(テーブルの作成や置換)を持つロール
- 上記のロールを付与されたユーザー
USE ROLE SECURITYADMIN;
// ロールの作成
CREATE ROLE <ロール名>;
// ユーザーの作成とロールへの割当、デフォルトで使用するウェアハウスの設定
CREATE USER <ユーザー名> PASSWORD = '<パスワード>' LOGIN_NAME = '<ログイン名>' DISPLAY_NAME = '<表示名>'
DEFAULT_ROLE = <ロール名> DEFAULT_WAREHOUSE = '<ウェアハウス名>' DEFAULT_NAMESPACE = '<任意のデータベース名>.<スキーマ名>' MUST_CHANGE_PASSWORD = TRUE;
GRANT ROLE <ロール名> TO USER <ユーザー名>;
USE ROLE SYSADMIN;
// ウェアハウスの作成と自動停止時間秒数の設定
CREATE OR REPLACE WAREHOUSE <ウェアハウス名>
WITH WAREHOUSE_SIZE = '<ウェアハウスサイズ>'
AUTO_SUSPEND =60
INITIALLY_SUSPENDED = TRUE
AUTO_RESUME = TRUE;
// ウェアハウスの使用許可を上記のロールに割り当てる
GRANT ALL ON WAREHOUSE <ウェアハウス名> TO ROLE <ロール名>;
// データベース、スキーマの作成、ロールへのデータベース、スキーマの権限の付与
CREATE DATABASE <データベース名>;
CREATE SCHEMA <データベース名>.<スキーマ名>;
GRANT USAGE ON DATABASE <データベース名> TO ROLE <ロール名>;
GRANT USAGE, CREATE TABLE, CREATE STAGE ON SCHEMA <データベース名>.<スキーマ名> TO ROLE <ロール名>;
GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON FUTURE TABLES IN SCHEMA <データベース名>.<スキーマ名> TO ROLE <ロール名>;
(2) Salesforceの同期出力の有効化
- Salesforceで[設定]をクリックします。
-
クイック検索バーに「分析」 と入力します。[設定]をクリックします。
-
[データの同期と接続を有効化]と[Snowflake 出力接続を有効化]、[外部データソースのダイレクトデータを有効化]をオンにします。
(3) Snowflake出力接続の構成
Salesforceの同期出力を有効化したら、Snowflakeへの出力接続を構成します。
- Tableau CRM Analytics Studioの[データマネージャー]をクリックします。
- データマネージャーの[接続]タブをクリックし、[データに接続]を行い、[接続を追加]をクリックします。
- Snowflake 出力コネクタをクリックします。
- Snowflakeの出力定義を編集します。
Snowflakeの接続に必要なすべてのフィールドを入力します。
- 接続名(必須): 値は任意
- API参照名(必須): 値は任意
- 説明(必須): 値は任意
- Schema(必須)
- Password(必須)
- (1) Snowflakeのオブジェクト作成で作成したパスワードを使用してください。ユーザー作成時にパスワードリセットを有効化しているため、使用前にSnowflakeの初回ログインとパスワード変更が必要です。
- Role(任意)
- Warehouse(必須)
- Username(必須)
- Passwordの備考と同じ
- Account(必須)
- Accountには<account_name>.snowflakecomputing.comの識別子が求められます。
※Schema、Warehouse、Usernameにはすべて大文字を使用してください。
- Accountには<account_name>.snowflakecomputing.comの識別子が求められます。
- [保存&テスト]をクリックして接続をテストします。
(4) Salesforceデータに接続し、データ同期を構成
- [データマネージャー]の[データに接続]、SFDC_LOCALをクリックします。
- 同期するSalesforceオブジェクトを選択します。[続行]をクイックします。
- オブジェクトとの同期するフィールドを選択します。[続行]をクリックします。
- [ソースデータをプレビュー]画面で同期データを確認し、保存します。
同期するオブジェクトがデータマネージャーに表示されます。グレーのオブジェクトが同期ができていないものとなります。
これでSalesforceデータをTableau CRMのデータストアに同期することができます。
(5) SyncOutの有効化とスケジュールの設定
- SFDC_LOCALの右側に右側の[未スケジュール]をクリックし、[スケジュール]と[Sync Out]を設定します。
- [スケジュール]は、SalesforceデータのTableau CRMへの同期タイミングとなります。
- [Sync Out]は、Tableau CRMからSnowflakeへのデータ同期の有効化となります。
画面のSyncOutはSnowflakeへの出力接続名が反映されています。
-
データ同期をすぐに実行するには、下矢印をクリックして[今すぐ実行]をクリックします。
-
データマネージャーの[監視]タブからデータ同期ジョブの監視を行うことができます。
(6) Snowflakeのデータにアクセスする
SalesforceオブジェクトはSnowflakeのテーブルとして表示され、Sync Outの設定により継続した完全更新もしくは増分更新を管理することができます。
まとめ
Tableau CRM SyncOutを使ってSalesforceデータをSnowflakeというクラウドデータプラットフォームに同期する機能を紹介させていただきました。SalesforceデータをETLを自前で実装しなくても、セルフサービスで容易にSnowflakeに継続したデータパイプラインを構築することができるのは、とても便利だと思いました。今後もSalesforce、Snowflake、Tableauのパートナーシップに期待です。
リソース
本記事に関する詳細については、次のリソースを参照してください。
- Sync Out for Snowflake
https://help.salesforce.com/articleView?id=sf.bi_integrate_connectors_sync_out_snowflake.htm&type=5 - SnowflakeとTableauの蜜月な関係
https://news.mynavi.jp/kikaku/snowflake-workload-2/ - Integrating Salesforce Data with Snowflake Using Tableau CRM Sync Out
https://www.snowflake.com/blog/integrating-salesforce-data-with-snowflake-using-tableau-crm-sync-out/?lang=ja
Discussion