見出し画像

BIを使ってSalesforceのデータをメチャクチャ可視化する方法(Redash/Looker) 〜Redash編〜

こんにちは!芳賀と申します。
Salesforceを中心としたSaaSの導入/開発を行なっているPraztoという会社の代表をしています。
趣味はなんですか?と聞かれたらSalesforceって答えるのが一番しっくりくるくらいSalesforce好きで、夜通し話し合いたいですw

いま勢いを増しているBIツールのRedashとLookerを使ってSalesforceのデータをメッチャ可視化する方法をご紹介させてください!使ってくれると嬉しいです!😎

今日はまずRedashのご紹介です、Lookerは近日中にまた書きます〜✍️
Lookerを使ったSalesforceへのEmbed Dashboardは神だと思ってるので、ぜひご紹介をさせてください〜✍️

😭標準のダッシュボード/レポートだと、複数オブジェクトを自由に結合できなくてツラい

PostgresやMySQLなどのDatabaseを使用して開発をしてきた人がSalesforceの開発に入って面食らうポイントの一つが、この ”複数のテーブル(オブジェクト)を自由に結合できない問題” なのではないでしょうか。

主従関係/参照関係で繋がっていれば問題ありませんが、"繋がってないけど同じ値を持つレコード"、"同じオブジェクトの中でここの日付が1年前のものと比較したい"といった要件はどうしても発生します。

例えばこんなケースです。

 1. 売上の前年同月比などの複雑なKPI指標を可視化したい

・取引先ごとに、MRRの前年の同月と比較した伸び率を把握したい
・取引先ごとだけではなく、Sales/CSM/Tierごとにも同様に把握したい
・そして、運用を続けるうちにその集計軸の要件は変わっていくでしょう...

2. Webから流入してくるリードが既存取引先の人?可視化したい

・新規リード(Lead)を、同じメールドメインを持つ取引先責任者/取引先がSalesforce内に既にあるかがわかるように一覧化したい。
・その取引先が契約中の企業かどうかもチェックしたい。
・その取引先の売上高も一緒に一覧化したい。
・そして、運用を続けるうちに重複の条件は変わっていくでしょう...

もちろん、1には分析スナップショットPREVGROUPVAL関数、2には結合レポート重複ルール/一致ルールなどを使った解決策を検討するのですが、要件によって標準機能だけでは難しいケースも多々あると思います。


😍Redashを使えば、サクッと自由に結合したレポート/ダッシュボードを作れます

まずRedashについて簡単にご説明します。

とても簡単に言ってしまうと、

・レポート/ダッシュボード作成サービス
・[特徴1] ものすごい数のDatabase/SaaSへのコネクターが用意されている
・[特徴2] SQLが書ければレポートはOK。あとはビジュアライズをRedash上でグイグイいじればダッシュボードもOK。

です。
とても著名なサービスですので、検索するとたくさん紹介サイトがヒットしますので、詳細はそちらをご参照ください。

😍まずはサクッとSalesforceへの接続

まずRedashをSalesforce自社組織につなげます。何も難しい設定はいりません。やはりこの辺が、Redash、Salesforceがどちらも著名なサービスであるがゆえのエコシステムからの恩恵なんですよね、感謝です🙌

画像1

Salesforce Datasourceを選択します。

画像2

認証情報を入力します。これで終わりです。

画像3

(SQLではなく)SOQLを使ったデータ取得はもうこれで出来てます。

😍複雑なJoinを実現する「Query Results」 Data source

ここがこの"Salesforceのオブジェクト同士を複雑にJoinする"のポイントになる点です。
RedashのData sourceの1つである"Query Results"とは、"他のData sourceを使用したクエリ結果からレコードを取得する" Data sourceです。
これを使えば以下が可能になるんです😍

1. Salesforce Datasourceを使用した(SOQL構文の)クエリを2つ作成する。クエリ1とクエリ2とします。
2. Query Results Datasourceを使用して、クエリ1とクエリ2をJoinする。この時の構文は、SOQLではなくSQLの構文になる。

内部で行われているのはきっと中間テーブルなんですよね。クエリ1とクエリ2の結果をそれぞれ中間テーブルに保存して、その中間テーブル2つをSQLで結合して結果を取得しているんだと思います。すごいのは、その泥臭い箇所がすべて抽象化されていて、SQLの記述だけで完結できるところなんです✨

実際にやってみます。

画像4

「Query Results」 Data sourceを追加します。

次に、SQLで結合できる簡単な例として、LeadとAccountをSQLのleft join構文でつないでみます。これが出来れば、今まで出来なかった複雑なJoinもできるようになる、ということです!

画像5

まずSOQLでLeadのデータを取得するクエリを作成します。

画像6

次もSOQLでAccountのデータを取得するクエリを作成します。

画像7

これが、その結果2つを、(SOQLではなく)SQLで結合して取得したクエリです。少し残念なのが、それぞれのクエリの名称がこのSQLの中で使えない、というところです。312160、312161はそれぞれ自動発番される番号で、スクリーンショットの通りURLの中の数字です。この数字を使ってSQLでデータを取得します。

SQLのleft joinが使えてますよね!これでSOQLの強烈な制約をサクッと乗り越えられたので、

1. 売上の前年同月比などの複雑なKPI指標を可視化したい
2. Webから流入してくるリードが既存取引先の人?可視化したい

のような複雑な要件もSQLで記述してしまえばOKでしょ。ということです。

😍豊富なビジュアライズのダッシュボード群

次は、この結果をビジュアル化するダッシュボードです。もちろんメチャクチャ豊富なビジュアライズが用意されています。こちらが本家Githubの画像です。さっきの結果をグイグイ画面で動かして作ればOKです。

画像8


最後にRedashのさらにイケてると思う使い方のご紹介です!

😍[イケてる使い方]URLに動的パラメータを追加できる。Salesforceのカスタムリンクを使ったデータ表示

Salesforceのレポートでも同じ機能がありますが、RedashにはURLパラメータにパラメータを付与することが出来て、その値をSQL内のバインド変数として使用することが出来ます。

Redashクエリ(https://app.redash.io/prazto-note-test/queries/312162?opp_id=00XXXXXXXXXXXXXXX)は、商談レコード(00XXXXXXXXXXXXXXX)に限定した売上予測一覧を表示する

という事が出来るんです。ですので、Salesforceのカスタムリンクを使えば、以下のような使い方が出来ると思います!これメッチャ便利なんですよね。

画像9

どうでしたでしょうか?こちらが、Redashを使ったSalesforceのオブジェクト間の複雑な結合方法です。メッチャ可能性広がりますよね🙌

近日中にLookerのご紹介もしたいと考えています。Lookerにはさらに凄い点が盛りだくさんなので、早く伝えたい笑
以下のような内容を考えています✍️

😍[Lookerのすごい機能]平均商談金額、今期受注率などといった集計関数を、わかりやすい名称で宣言的に定義して、共通処理として再利用できる

↑のRedashのツラい点の1つとして、ほぼ毎回全てSQLを直に書かなければいけないところがあると思います。クエリの再利用でさえ、再利用側のSQLでaliasとしてわかりやすい名称をつけなければなりませんでした😭
Lookerはここを見事に解決していて、Railsのmodelにmethodを追加するのと全く同じように、テーブルに対して集計関数を共通処理として追加/管理する事が可能なんです。だから開発を進めていってもカオスになりにくいんです。

😍[Lookerのすごい機能]だから、SQLを書けないビジネスユーザーでも平均商談金額、今期受注率などの高度な指標をドラッグ&ドロップするだけでダッシュボードが作れる

その共通処理の恩恵の1つとして、ビジネスユーザーがSQLを意識せずにダッシュボードを構築できるようになる、というのがあると思います。
一度エンジニアがSQL(LookML)で共通処理を作ってしまえば、ビジネスユーザーはそれを使えば大丈夫です。
Salesforceを主に使用するのはビジネスユーザーなので、この特徴は運用上ものすごい利点になります。神機能です。

😍[Lookerのすごい機能]Embed Dashboardに動的パラメータが埋め込める。だから、Salesforceのレコード詳細画面に、そのレコードに関連した複雑な集計グラフを埋め込めることができる✨✨

↑でご紹介したRedashの動的パラメータからのレポートをSalesforceの画面に埋め込めたら最高ですよね。でも(現在の2020年1月時点では)これRedashでは出来ないんです😭Embed Dashboardという機能はあるんですが、ここに動的パラメータを設定できないんです。無理やりiframeで表示させようとしても、Redash側でX-Frame-Optionsで禁止をしているので出来ません。

Lookerはこれができるんです✨ ですので、以下のような事が出来てしまうんです✨✨ 本当に神機能です。

・商談レコードに対して、その商談に関連する複雑なKPI指標での予実グラフを、その画面に埋め込んで表示する事ができる。
・取引先レコードに対して、その取引先のヘルススコアとして複雑な集計グラフを、その画面に埋め込んで表示する事ができる。

ここまで読んでいただき、ありがとうございました!これかも宜しくお願いします!

この記事が気に入ったらサポートをしてみませんか?