Salesforce のリードデータをDWHのYellowbrick Dataにレプリケート:CDataSync

こんにちは!テクニカルサポートエンジニアの宮本です!

皆さんは Yellowbrick Data というサービスをご存知でしょうか?
この Yellowbrick Data は次世代のフラッシュストレージに最適化されたデータウェアハウスということで、USの記事などを見るとこれまでのDWHサービスに比べ格段とパフォーマンスが向上されているようです。

今回は ETL/ELT ツールのCData Sync を使って Salasforce のデータをレプリケートしてみたところ、ちゃんと Yellowbrick に連携することができましたので、この実現方法をご紹介していこうと思います。

Yellowbrick Data とは

Yellowbrick Data はハイパフォーマンスかつ低価格が特徴のインメモリデータベース型クラウドデータウェアハウスです。この DB には PostgreSQL の JDBC や ODBC からアクセスできるので、中は PostgreSQL が動いているようです。
Data Warehouse for Distributed Data Cloud - Yellowbrick f:id:sennanvolar44:20211019150950p:plain

公式サイトにも価格やパフォーマンスの比較が出ていて、Snowflake との比較結果を見る限りでは相当パフォーマンスが高いことがわかります。
https://www.yellowbrick.com/performance/
f:id:sennanvolar44:20211019153152p:plain

コストは3レベルあり、提示されているのは STANDARD だけですが、月に $10K からということなので、判断材料としてはわかりやすいですね。
f:id:sennanvolar44:20211019154217p:plain

また、Yellowbrick はAWSへのホスティングの他、近々 Azure や GCP 上でも利用できるようになるようです。

やってみること

f:id:sennanvolar44:20211019162223p:plain Yellowbrick がネイティブの PostgreSQL Driver で接続できるということから、CData Sync のPostgreSQL コネクタを使って Salesforce のデータを Yellowbrick が保持している DB にレプリケートしてみます。

以下は Yellowbrick の管理コンソールです。最終的にはこの Yellowbrick の DB に Salesforce のオブジェクトがそのままテーブルとして追加されるようになります。
f:id:sennanvolar44:20211019162402p:plain

ではさっそくやっていきましょう。

手順

用意するものは下記になります。

  • Yellowbrick のアカウント
  • CData Sync ※30日間無料トライアルあり
  • Salesforce アカウント

CDataSync 準備

CData Sync を以下リンクからダウンロードします。
www.cdata.com

ダウンロードしましたらそのままインストーラーを実行してインストールを開始します。
基本的にそのまま進めちゃって大丈夫です。

ちなみにCDataSyncの基本的な操作方法はこちらのハンズオン記事をご参照ください。

CData Sync ハンズオン - CData Software Blog

接続設定

Salesforce の接続設定

起動しましたら、接続設定を行います。Salesforce アイコンをクリックし、
f:id:sennanvolar44:20211019164432p:plain

以下の接続情報を入力したら、接続のテスト→保存を行います。

項目 設定値
名前 任意の接続情報
フォーマット設定 プロパティリスト
Auth Scheme Basic ※OAuthも可能
User Salesforceのユーザー情報
Password Salesforceのパスワード
Security Token Salesforceのセキュリティトークン
Use Sandbox False

f:id:sennanvolar44:20211019164620p:plain

Yellowbrick の接続設定

Yellowbrick への接続には最初に少しだけ設定が必要になります。
とはいえやることは、Yellowbrick 内の PostgreSQL に任意の DB とユーザー権限を付与するだけになります。

①DBの作成

create database Salesfocre_DB;

f:id:sennanvolar44:20211019171311p:plain

②ユーザーの作成
DB を切り替えた後にユーザー作成

create user sfuser password 'sfpass';

③Yellowbrick のホスト名を確認 ここでホスト名とポートを確認します。後ほど CData Sync の接続設定で使用するのでコピーしておきます。
f:id:sennanvolar44:20211019172833p:plain

では CData Sync に戻り、Yellowbrick の接続情報を作成します。
接続情報画面にて同期先→PostgreSQL アイコンをクリックします。
f:id:sennanvolar44:20211019172027p:plain

以下の内容を設定します。

項目 設定値
名前 任意の接続情報
フォーマット設定 プロパティリスト
Server 先ほど確認したYellowbrickのホスト名
Port 上と同じく確認したポート
Database 作成したDB
User 作成したDBのユーザー
Password 作成したDBのパスワード

f:id:sennanvolar44:20211019171817p:plain

ジョブ作成~実行

ジョブ作成画面でジョブを追加ボタンをクリックし、ソースに Salesforce の接続情報、同期先に Yellowbrick の接続情報を指定してジョブを作成します。
f:id:sennanvolar44:20211019173635p:plain

次に実行するクエリを作成します。テーブルを追加ボタンから Lead テーブルを選択してクリックします。
本来ならこれだけで良いのですが、Salesforce で設定されているLONGTEXT型の項目がYellowbrick(PostgreSQL) 上では利用できません。ですので、下記のように型変更の指定をクエリに入れてあげることでジョブが実行できるようになります。

REPLICATE [Lead_SF] (Description VARCHAR2(3000)) SELECT * FROM [Lead]

作成したクエリにチェックを入れて実行します。成功するとステータスにレプリケートした件数が表示されるようになります。
f:id:sennanvolar44:20211019175652p:plain

では Yellowbrick のDBを確認してみましょう。

Yellowbrick 上で連携データ確認

Databases からデータベース一覧を表示させ、対象DBをクリックしてみます。
f:id:sennanvolar44:20211019180541p:plain

そうすると、本来あるはずのレプリケートしたテーブルが表示されていません。
f:id:sennanvolar44:20211019180931p:plain

これは対象DBへの権限が、このYellowbrick 管理画面にログインしているアカウントに振られていないことが原因です。
この管理画面へのログインアカウントは恐らく1つだけになるので、そのアカウントへ権限付与してあげることでテーブルが表示されるようになります。

権限付与のために以下のクエリを実行するとログインアカウントでテーブルまで見れるようになります。

grant sfuser to "[email protected]";

f:id:sennanvolar44:20211021130328p:plain

あとはクエリを実行してみるとレプリケートしたレコードが表示されます。
f:id:sennanvolar44:20211021131537p:plain

また、実行結果からYellowbrick上のCPUやメモリの利用状況を確認することができるようですね。
f:id:sennanvolar44:20211021132158p:plain

おわりに

Salesforce から Yellowbrick への連携はいかがでしたでしょうか。大量データを扱っていてこれからどのDWHを使うか選定中であれば、一度試してみてはいかがでしょうか? また、CData Sync は 30日間の無償トライアルが可能です。是非お試しください!

www.cdata.com

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

関連コンテンツ