製品をチェック

製品の詳細・30日間の無償トライアルはこちら

CData Sync

Redshift とSalesforce のデータをSnowflake に統合して、Salesforce に書き戻す方法

Redshift とSalesforce のデータをSnowflake に統合してリードスコアを付加した後に変更後のデータをSalesforce に書き戻す、リバースETL 構成のパイプラインを構築します。

宮本航太
プロダクトスペシャリスト

最終更新日:2024-03-12
redshift ロゴ

CData

sync ロゴ画像
Salesforce ロゴ

こんにちは!プロダクトスペシャリストの宮本です。

CData Sync は、400種類以上のSaaS / DB のデータを各種DB・データウェアハウスにノーコードで統合可能なデータパイプラインツールです。CData Sync では、DB / DWH だけでなくSalesforce をはじめとする一部SaaS をデータの転送先としてサポートしているため、いわゆるリバースETL 構成のデータパイプラインを構築できます。

本記事では、Redshift とSalesforce のデータをSnowflake に統合、リードスコアを計算・付加した後にSalesforce に書き戻す、というリバースETL 構成のパイプラインを作っていきます。

CData Sync とは?

CData Sync は、レポーティング・ダッシュボード、機械学習・AI などで使えるよう、社内のデータを一か所に統合して管理できるデータ基盤をノーコードで構築できるETL ツールで、以下の特徴を持っています。

  1. Redshift をはじめとする400種類以上のSaaS / DB データに対応
  2. 主要なRDB、データレイク、データストア、データウェアハウスにデータを転送
  3. 業務データのデータ分析基盤へのETL / ELT 機能に特化し、極限まで設定操作をシンプルに
  4. 主要なSaaS データの差分更新やCDC(Change Data Capture、変更データキャプチャ)のサポート
  5. フレキシブルなSQL での取得データの操作
  6. Salesforce を始めとする一部SaaS へのデータ転送(リバースETL)をサポート
他にもパワフルな機能を搭載しています。

リバースETL とは?

ETL の逆、いわゆるデータウェアハウスからSaaS へデータを転送することを指します。アプリ間連携のようなEAI とは異なり、ETL のようにバッチ処理での連携を行います。例えばSalesforce のデータを元にデータウェアハウス内で集計・予測してから書き戻したい場合、①Salesforce → データウェアハウスで連携、②データウェアハウスで変換されたデータをSalesforce に書き戻し、と2つのポイントがありますが、後者の構成がリバースETL に当たります。

リバースETL の構成例

それでは、Redshift とSalesforce のデータを統合して書き戻すための具体的な設定手順を説明していきます。

実現するシナリオ

Redshift とSalesforce の情報を一度Snowflake に統合、統合したデータを使ってリードをスコアリングし、その結果をSalesforce に書き戻します。 リバースETL のデータソースとなるDB としてSnowflake を使い、全体のデータの流れは、

Salesforce (Lead)+Redshift → Snowflake(スコアリング)→ Salesforce(Lead)

となります。なお、Salesforce のLead オブジェクトにはスコアリング結果を格納するカスタム項目を事前に作成しておきます。

Salesforce とRedshift への接続を設定

はじめに、Salesforce とRedshift のデータをSnowflake に転送するための設定を行います。

CData Sync のブラウザ管理コンソールにログインします。CData Sync のインストールをまだ行っていない方は本記事の製品リンクからCData Sync をクリックして、30日の無償トライアルとしてCData Sync をインストールしてください。インストール後にCData Sync が起動して、ブラウザ設定画面が開きます。

それでは、データソースとしてRedshift を設定していきましょう。左の[接続]タブをクリックします。

  1. [+接続の追加]ボタンをクリックします。 コネクションの追加。
  2. [データソース]タブを選択して、リスト表示されるデータソースを選ぶか、検索バーにデータソース名を入力して、Redshift を見つけます。
  3. Redshift の右側の[→]をクリックして、Redshift アカウントへの接続画面を開きます。もし、Redshift のコネクタがデフォルトでCData Sync にインストールされていない場合には、ダウンロードアイコン(コネクタのアップロードアイコン)をクリックし、[ダウンロード]をクリックすると、CData Sync にコネクタがインストールされます。 データソースの追加。
  4. 接続プロパティにRedshift に接続するアカウント情報を入力をします。

    Redshift への接続には次を設定します:

    • Server: 接続するデータベースをホストしているクラスタのホスト名およびIP アドレス。
    • Port: クラスタのポート。
    • Database: データベース名、ブランクの場合ユーザーのデフォルトデータベースになります。
    • User: ユーザー名。
    • Password: ユーザーのパスワード。

    Server およびPort の値はAWS の管理コンソールで取得可能です:

    1. Amazon Redshift console (http://console.aws.amazon.com/redshift) を開く。
    2. Clusters ページで、クラスタ名をクリック。
    3. クラスタのConfiguration タブで、表示された接続文字列からクラスタのURL をコピーします。 データソースの追加。
    4. [作成およびテスト]をクリックして、正しくRedshift に接続できているかをテストして保存します。これでレプリケーションのデータソースとしてRedshift への接続が設定されました。

    Salesforce への接続を設定

    データソースとしてSalesforce を設定します。接続プロパティまでの設定方法は基本的にRedshift と同じです。

    Salesforce への接続には通常のログインの他、OAuth やSSO を利用できます。ログイン方式では、ユーザー名、パスワード、セキュリティトークンを使って接続します。Salesforce セキュリティトークンの取得についてはこちらの記事をご確認ください。

    ユーザー名、パスワードを使用しない、またはできない場合、OAuth 認証を利用できます。

    SSO (シングルサインオン) は、SSOProperties、SSOLoginUrl、TokenUrl プロパティを設定することでID プロバイダー経由で利用できます。詳細はヘルプドキュメントの「はじめに」を参照してください。

  5. Snowflake への接続を設定

    次に、Snowflake への接続を設定します。同じく[接続]タブを開きます。

    1. [+接続の追加]ボタンをクリックします。
    2. [同期先]タブを選択して、リスト表示されるデータソースを選ぶか、検索バーにデータソース名を入力して、Snowflake を見つけます。
    3. Snowflake の右側の[→]をクリックして、Snowflake データベースへの接続画面を開きます。 Snowflake をDestination に選択
    4. 必要な接続プロパティを入力します。Snowflake との接続には、以下のプロパティが必要です。
      • User: Snowflake データベースへの認証用のusername
      • Password: Snowflake ユーザーのpassword
      • AuthScheme: 使用する認証スキーマ。入力可能な値はPASSWORD、もしくはOKTA
      • Account: Snowflake でのアカウント
      • URL: Snowflake インスタンスのURL 例: https://myaccount.snowflakecomputing.com
      • Warehouse: Snowflake ウェアハウスの名前
      • Database: Snowflake データベース名
      • Schema: Snowflake データベースのスキーマ
    5. [作成およびテスト]をクリックして、正しく接続できているかをテストします。 同期先接続のテスト
    6. これで転送先としてSnowflake を設定できました。CData Sync では、Snowflake のデータベース名を指定するだけで、転送するSnowflake に併せたテーブルスキーマを自動的にCREATE TABLE してくれます。同期データに合わせたテーブルを事前に作成するなどの面倒な手順は必要ありません。もちろん、既存テーブルにマッピングを行いデータ同期を行うことも可能です。

    Salesforce とRedshift のデータをSnowflake に統合

    CData Sync では、データ転送をジョブ単位で設定します。ジョブは、例えばSalesforce → Snowflake といった1データソース対1転送先の単位で設定し、データソースが持つ複数のテーブルを含むことができます。データ転送ジョブを設定するには、[ジョブ]タブに進み、[+ジョブを追加]ボタンをクリックします。 ジョブの追加

    すべてのオブジェクトをデータ転送する場合

    Salesforce のすべてのオブジェクト / テーブルをデータ転送するには、[種類]で[すべて同期]を選択して、[ジョブを追加]ボタンで確定します。

    作成したジョブ画面で、右上の[▷実行]ボタンをクリックするだけで、全Salesforce テーブルのSnowflake への同期を行うことができます。

    オブジェクトを選択してデータ転送する場合

    Salesforce から特定のオブジェクト / テーブルを選択してデータ転送を行うことが可能です。[種類]では[標準(個別設定)]を選んでください。

    次に[ジョブ]画面で、[タスク]タブをクリックし、[タスクを追加]ボタンをクリックします。 ジョブへのタスク追加。

    するとCData Sync で利用可能なオブジェクト / テーブルのリストが表示されるので、データ転送を行うオブジェクトにチェックを付けます(複数選択可)。[ジョブを追加]ボタンで確定します。

    タスク選択。

    作成したジョブ画面で、[▷実行]ボタンをクリックして(もしくは各タスク毎の実行ボタンを押して)、データ転送ジョブを実行します。 作成したジョブの実行(Salesforce の例)。

    このようにとても簡単にSalesforce からSnowflake への同期を行うことができました。

    Snowflake に転送されたテーブルを見てみると、無事にSalesforce のデータが転送されていることが確認できます。スコアリング結果を格納するLeadScore_c(カスタム項目)にはまだ何もデータが入っていませんので、ここにRedshift のデータを統合したリードスコアリングの計算結果を追加します。

    Snowflake への転送結果

    同じ手順で、Redshift のお好みのデータをSnowflake に転送できます。今回はOrders を使用しました。

    リードスコアリング

    それでは、Salesforce のリードをスコアリングしてSnowflake に反映しましょう。このときにRedshift のOrders データを統合して使います。

    CData Sync ではSalesforce とRedshift 以外にも400種類以上のデータソースをサポートしているので、スコアリングに必要なデータ(Webサイト上のアクティビティやメール開封率、ダウンロード履歴など)が他にあれば追加してみてください。

    それでは、Snowflake のLead_reverse テーブルのLeadScore_c を参照してみましょう。

    本記事ではリードスコアリングの方法は省きますが、Snowflake 上でSalesforce とRedshift のデータを使ってスコアリングした結果は以下のようにLeadScore_c カラムに追加しています。

    スコアリングを算出してLeadScore_c カラムに追加

    この更新されたリードデータを、元のリードデータを持つSalesforce に書き戻します。

    Salesforce への書き戻し

    書き戻しを行うには、Snowflake からSalesforce へのジョブを作成する必要があります。ただし、作成方法はデータソースと同期先に注意するだけでほとんど同じです。

    では、ジョブを追加ボタンをクリックしてジョブを作成していきます。

    • データソース:Snowflake
    • 同期先:Salesforce
    • 転送モード:元あるリードデータにスコアリング結果を加えるだけなので、Update
    ジョブ追加画面ではUpdateを選択

    ※連携方法は、 Insert、Upsert、Update の3パターンから選択可能です。Upsertの場合は、Salesforce で外部ID として登録している項目のみKey として使用可能

    ここでテーブル同士を紐づけます。

    Snowflake のLead_reverse テーブルをSalesforce のLead テーブルに同期する設定

    次にどの項目をキーにするか、またどのカラム同士をマッピングするかを指定します。今回は LeadScore_c 同士でマッピングしました。

    カラムのマッピングを設定

    設定は以上で、あとは右上の実行ボタンをクリックするだけです。※運用時はスケジュール設定を行ってださい。

    右上の実行ボタンをクリック

    実行が完了すると、ステータスや更新した行数が表示されます。

    ステータスがSuccessfulになっていることを確認

    では、最後に Salesforce のLeadオブジェクトを見てみましょう。LeadScore 列にSnowflake でスコアリングした結果が取り込まれました!

    Snowflake とSalesforce のテーブルを紐づけ

    Salesforce へのリバースETL 構成をCData Sync で実現

    このように、Salesforce とRedshift のデータを統合して書き戻すリバースETL のような複雑に思える構成でも、CData Sync ならノーコードで簡単に実現できます。

    リバースETL にはリードスコアリングの他、マスタデータとの連携やWeb 解析ツールが持つユーザーアクティビティとの連携など、幅広いユースケースがあります。30日間の無償トライアルで、リバースETL パイプラインの構築を手軽にお試しください。

    日本のユーザー向けにCData Sync は、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

    もっとユースケースが知りたい!という方は、CData Sync の 導入事例を併せてご覧ください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。