製品をチェック

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

CData Sync

JSON のデータをSnowflake に連携して、Salesforce に書き戻す方法

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

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

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

CData

sync ロゴ画像
Salesforce ロゴ

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

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

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

CData Sync とは?

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

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

CData Sync を使い始める

CData Sync はフルマネージド(SaaS)型・オンプレミス型・AWS でのホスティング、と多様なホスティング環境に対応しています。各オプションで無償トライアルを提供していますので、自社のニーズにフィットするオプションを以下から選択してお試しください。

無償トライアルへ

リバースETL とは?

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

リバースETL の構成例

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

実現するシナリオ

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

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

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

Salesforce とJSON への接続を設定

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

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

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

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

    データソースへの認証については、ヘルプドキュメントの「はじめに」を参照してください。CData 製品は、JSON API を双方向データベーステーブルとして、JSON ファイルを読み取り専用ビュー(ローカル ファイル、一般的なクラウドサービスに保存されているファイル、FTP サーバー)としてモデル化します。HTTP Basic、Digest、NTLM、OAuth、FTP などの主要な認証スキームがサポートされています。詳細はヘルプドキュメントの「はじめに」を参照してください。

    URI を設定して認証値を入力したら、DataModel を設定してデータ表現とデータ構造をより厳密に一致させます。

    DataModel プロパティは、データをどのようにテーブルに表現するかを制御するプロパティで、次の基本設定を切り替えます。

    • Document(デフォルト):JSON データのトップレベルのドキュメントビューをモデル化します。CData 製品 は、ネストされたオブジェクト配列を集約されたJSON オブジェクトとして返します。
    • FlattenedDocuments:ネストされた配列オブジェクトと親オブジェクトを、単一テーブルに暗黙的に結合します。
    • Relational:階層データから個々の関連テーブルを返します。テーブルには、親ドキュメントにリンクする主キーと外部キーが含まれています。

    リレーショナル表現の設定についての詳細は、ヘルプドキュメントの「JSON データのモデリング」を参照してください。また、以下の例で使用されているサンプルデータも確認できます。データには人や所有する車、それらの車に行われたさまざまなメンテナンスサービスのエントリが含まれています。

    Amazon S3 内のJSON への接続

    URI をバケット内のJSON ドキュメントに設定します。さらに、次のプロパティを設定して認証します。

    • AWSAccessKey:AWS アクセスキー(username)に設定。
    • AWSSecretKey:AWS シークレットキーに設定。

    Box 内のJSON への接続

    URI をJSON ファイルへのパスに設定します。Box へ認証するには、OAuth 認証標準を使います。 認証方法については、Box への接続 を参照してください。

    Dropbox 内のJSON への接続

    URI をJSON ファイルへのパスに設定します。Dropbox へ認証するには、OAuth 認証標準を使います。 認証方法については、Dropbox への接続 を参照してください。ユーザーアカウントまたはサービスアカウントで認証できます。ユーザーアカウントフローでは、以下の接続文字列で示すように、ユーザー資格情報の接続プロパティを設定する必要はありません。 URI=dropbox://folder1/file.json; InitiateOAuth=GETANDREFRESH; OAuthClientId=oauthclientid1; OAuthClientSecret=oauthcliensecret1; CallbackUrl=http://localhost:12345;

    SharePoint Online SOAP 内のJSON への接続

    URI をJSON ファイルを含むドキュメントライブラリに設定します。認証するには、User、Password、およびStorageBaseURL を設定します。

    SharePoint Online REST 内のJSON への接続

    URI をJSON ファイルを含むドキュメントライブラリに設定します。StorageBaseURL は任意です。指定しない場合、ドライバーはルートドライブで動作します。 認証するには、OAuth 認証標準を使用します。

    FTP 内のJSON への接続

    URI をJSON ファイルへのパスが付いたサーバーのアドレスに設定します。認証するには、User およびPassword を設定します。

    Google Drive 内のJSON への接続

    デスクトップアプリケーションからのGoogle への認証には、InitiateOAuth をGETANDREFRESH に設定して、接続してください。詳細はドキュメントの「Google Drive への接続」を参照してください。

    データソースの追加。
  5. [作成およびテスト]をクリックして、正しくJSON に接続できているかをテストして保存します。これでレプリケーションのデータソースとしてJSON への接続が設定されました。

Salesforce への接続を設定

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

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

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

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

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 とJSON のデータをSnowflake に統合

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

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

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

作成したジョブ画面で、右上の[▷実行]ボタンをクリックするだけで、全Salesforce テーブルをSnowflake に転送できます。

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

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

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

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

タスク選択。

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

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

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

Snowflake への転送結果

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

リードスコアリング

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

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

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

本記事ではリードスコアリングの方法は省きますが、Snowflake 上でSalesforce とJSON のデータを使ってスコアリングした結果は以下のように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 とJSON のデータを統合して書き戻すリバースETL のような複雑に思える構成でも、CData Sync ならノーコードで簡単に実現できます。

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

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

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

関連コンテンツ

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

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