📘

CRM Analyticsを使ってSnowflakeからSalesforceへのZeroリバースETLを実装する方法

2024/12/06に公開

本記事は Snowflake Advent Calendar 2024 の6日目です。

1. はじめに

SnowflakeにあるデータをSalesforceへリバースETLして、ビジネス側の方にSalesforce上でデータを見せたい、レポートの抽出条件に入れたい、そういった需要があると思います。

そこで今回は、Salesforceの製品CRM Analytics(旧Tableau CRM)を利用して、ZeroリバースETLを実装する方法についてまとめます。

なお、SalesforceからSnowflakeへのZeroETLの実装方法と、今回利用するCRM Analyticsについて、及びCRM Analyticsが利用可能なSalesforceの開発環境、Snowflakeのトライアル環境の取得方法については、前回の記事をご覧ください。
https://zenn.dev/suzupappa/articles/6cf3f7ba7cdd9e

前回のETL、今回のリバースETLのどちらも開発環境で実際に試すことができますので、興味を持たれた方はぜひ試してみてください。

2. 今回やること

2-1. 一文でまとめると

Snowflake Marketplaceから法人に関するオープンデータを取得し、それをCRM Analyticsを利用してSalesforceの取引先オブジェクトに法人番号をキーに結合し、Salesforceへデータを転送する。

2-2. 利用システム概要

CRM Analyticsなど、前回の記事で触れているもの以外のものについてリンクを張っておきます。

  • Snowflake Marketplace

https://www.snowflake.com/ja/data-cloud/marketplace/

  • オープンデータ:truestar社が提供するPrepper Open Data Bank

https://podb.truestar.co.jp/

  • 法人番号

https://www.nta.go.jp/taxes/tetsuzuki/mynumberinfo/houjinbangou/index.htm

法人番号については、法人番号株式会社さんが熱く語っていらっしゃいますので、そちらをご確認いただくのも良いかもしれません。
https://www.houjin-bangou.co.jp/

3. Snowflakeでのデータ準備

3-1. Marketplaceからデータを取得

Snowflakeにログインをしたら、まずはMarketplaceからPrepper Open Data BankのCorporate Dataをダウンロードします。

  1. 画面左上のData Products > Marketplaceをクリック
  2. 画面上の検索画面からPrepper Open Data Bank - Japanese Corporate Dataを検索
  3. Getをクリック
  4. Getをクリック(Optionsについては任意で設定ください)

--

4. Salesforceの設定

次にSalesforce側の設定をし、Snowflakeからデータを送付するための準備をします。

4-1. Salesforceへデータを出力する機能を有効化

デフォルト設定では機能が有効化されていないため、この設定をしないと後工程のSalesforce 出力コネクタが表示されません。

  1. 画面右上の歯車マークのボタン設定をクリック
  2. 画面左上のグローバル検索ボックスにAnalyticsと入力
  3. 設定をクリック
  4. Salesforce 出力接続を有効化にチェック
  5. 保存をクリック

--

4-2. tokenの生成

Salesforceでは、外部との連携をする場合、tokenを設定する必要があるので、その設定方法を記載します。

  1. アストロくんのマークをクリック
  2. 設定をクリック
  3. わたしのセキュリティトークンのリセットを設定
  4. セキュリティトークンのリセットをクリック
  5. メールにセキュリティトークンが届く
    ※5-3のステップで利用します


4-3. Salesforceに法人番号と従業員数を入力する項目を作成

取引先オブジェクトに、オープンデータとの結合のキーにするために利用する「法人番号」「従業員数」を入力する項目を作成します。

  1. 画面右上の歯車マークのボタン > 設定の順番でクリック
  2. 画面左上のオブジェクトマネージャーをクリック
  3. 画面右上のクイック検索に「取引先」と入力
  4. 画面左に取引先が出てくるので、クリック
  5. 画面左上の項目とリレーションをクリック
  6. 画面右上の新規をクリック
  7. データ型はテキストを選択し、次へをクリック
  8. 表示名、文字数、API参照名を入力
    • 表示名:法人番号
    • 文字数:13(法人番号は13桁のため)
    • 項目名:CorporateNumber
      • ※Salesforceはパスカルケースが主流ですが、記法は任意
  9. 何もせず、次へをクリック
  10. 「Analytics Cloud Integration User」にチェックが入っていることを確認し、保存をクリック
  11. 保存できれば、項目の作成完了

--






4-4. 法人番号を入力したサンプル取引先を作成

実際にデータがSnowflakeからSalesforceに入ることを確認するために、サンプルで法人番号を入力した取引先レコードを作成しておきましょう。

  1. 画面左上の点々マークをクリックし、リストからセールスをクリック
  2. 画面真ん中上のタブから取引先をクリック
  3. 画面右上の新規をクリック
  4. 取引先名法人番号を入力し、保存をクリック
    • サンプルとして、SalesforceとSnowflakeの法人番号をおいておきます
      • 株式会社セールスフォース・ジャパン:4010401076766
      • Snowflake合同会社:5010401146527
      • 最後に気付きまして、PODBに上記2社の従業員データがありませんでした...そのため、弊社の法人番号を例とします
      • 株式会社HR Force:3010001189465
    • こちらは、ご自身の会社や知っている会社など、ご自由にご入力ください
    • 法人番号の検索は、法人番号検索サイトから可能です

https://www.houjin-bangou.nta.go.jp/

--


5. CRM Analyticsの設定

5-1. Snowflakeとの接続設定

CRM Analyticsの機能を利用するためには、Analytics Studioのアプリケーションへ移動する必要があります。その後、今回はSalesforceとSnowflakeを接続するための設定を行います。

  1. 画面左上の点々マークをクリック
  2. Analytics Studioを選択(もし表示されない場合は検索窓に入力)
  3. データマネージャをクリック
  4. 接続をクリック
  5. 新しい接続をクリック
  6. 入力をクリック
  7. Snowflake コネクタをクリック
    ※Snowflake Direct コネクタ、Snowflake 非公開コネクタではないので、注意
  8. 次へをクリック
  9. Snowflake設定で設定した名称など、必要な情報を入力
    ※Database、Schemeには、PODBのデータが参照できる情報を入力
    Database:PREPPER_OPEN_DATA_BANK__JAPANESE_CORPORATE_DATA
    Scheme:E_PODB
  1. 保存してテストをクリック
  2. 出力タブと、設定した出力設定が存在すればOK

--




5-2. オブジェクトの設定

  1. 接続をクリック
  2. 入力タブ内のSnowflake接続(4-3でつけた任意の名前)にあるをクリック
  3. オブジェクトを編集をクリック
  4. オブジェクトはCORP_BASICにチェック
  5. 法人番号と従業員数の列にチェック
  6. おそらくエラーとなり保存できないため、エラーマークの隣の鉛筆マークをクリック
  7. 精度を20から18に変更
  8. 保存をクリック
  9. Snowflake接続の右にあるをクリックし、データ同期を実行をクリック
  10. 状況成功になっていたらOK

--




5-3. SnowflakeのデータをSalesforceへ出力する許可を行う設定

取引先や取引先責任者などの重要なオブジェクトはもともと接続されていたり、項目が選択されていることがあります。ただし、実際にはそれぞれの組織ごとに利用する項目は異なると思いますので、こちらの設定をして、送付する項目を決定しましょう。

  1. 接続をクリック
  2. 新しい接続をクリック
  3. 出力をクリック
  4. Salesforce コネクタをクリック
  5. 次へをクリック
  6. 必要な情報を入力
    パスワード欄のみ注意。自身で設定したもの+4-2で設定したtoken
  7. 保存してテストをクリック
  8. テストに成功し、出力タブに作成した出力設定が存在すればOK

--



5-4. レシピの作成

  1. 画面左からレシピタブに移動し、新規レシピをクリック
  2. 入力データを追加をクリック
  3. ACCOUNTCORP_BASICをチェックし、次へをクリック
    このとき、ACCOUNTでは法人番号と従業員数、IDのみにしておく
  4. 上記どちらかの隣にあるをクリック
  5. 接続タブから、選択した方ではない方(もう一つの方)を選択し、結合をクリック
  6. 結合キーを「法人番号」の項目で設定する
  7. 結合の隣のから、出力をクリック
  8. 必要な情報を入力し、適用をクリック
    書き込み先:出力接続
    接続名:5-3で作成した出力接続
    オブジェクト名:Account
    項目:それぞれ適切に紐づいているか確認
  9. 保存して実行をクリックし、任意のレシピ名で保存(→自動実行開始)
    ※ジョブ監視タブにて実行結果の確認が可能

--








5-5. スケジュール設定

本番環境を想定すると、毎日決まった時間に同期する設定をしたい、などの要望があると思いますので、その方法についてご紹介します。

  1. レシピタブの該当のレシピ横にあるをクリック
  2. スケジュールをクリック
  3. 時間ベース、イベントベースにてスケジュール管理が可能

--

6. Salesforceのデータ確認

最後に、Salesforceの取引先に、Snowflakeからデータが送付されたのかを確認してみます。

無事、入ってきていました。これにて完了です。

7. おわりに

今回は、CRM Analyticsを利用して、SnowflakeからSalesforceへのZeroリバースETLの実装方法についてご紹介しました。今回はSnowflakeを利用しましたが、CRM Analyticsがコネクタを持っていれば、他の製品でも同様の方法で実装することが可能です。
本記事が少しでも皆様がCRM Analyticsに興味を持ってくださるきっかけとなれましたら幸いです。

Discussion