見出し画像

Einstein Analyticsでレンズ間で計算したいっておもったことありませんか

弊社で言えばこういうのなんですけど。

画像1

売上目標金額があって、達成金額があって、達成率があって、目標金額-達成金額で予算達成までの残り金額が出せる。みたいな奴です。

目標金額と達成金額はデータソースが異なります。そのため単純に計算ができません。

でもさ、配置してあるレンズにはIDが振られるじゃないですか。

ここで言えば、デフォルトのままで配置するとこんな感じの名前が付きます(number_3だけ省略しましたが)

画像2

そしたらさ、達成率なんて number_2/number_1 っていう数式書いて出力してほしいじゃない。それは出来ないんですよ今は。出来たらめちゃ捗るのになぁ(チラッ

ではどうやるか:SAQLの書き方

q = load "amount_plans";
q2 = load "GMmode2";
q2 = filter q2 by 'ForecastCategoryName' in ["契約済み請求前", "請求済み"];
result = cogroup q by all,q2 by all;
result = foreach result generate sum(q2.'Amount')/sum(q.'Target_Amount__c') as '結果';

1,2行目ではq,q2という変数にデータセットをロードしています。単純にロードするだけでOK。データセット名がわからない場合は、該当するレンズをダッシュボードの編集モード時にクリックして、SAQLモードで開けば、何がロードされてるかわかると思うのでそれを持ってくる。

3行目では、q2の数値のフィルタ条件を設定しています。q2にロードしているのは、画像で言うところの達成金額部分なので、商談の売上予測分類が契約済み請求前及び請求済みの2つのみを使います。

4行目 cogroupで何をしているか。リファレンスはこちら

cogroup を使用して、複数のデータストリームのデータを組み合わせて 1 つのデータストリームにまとめることができます。データストリームには、1 つ以上の共通項目が必要です。

両方のデータソースにはallというカラムが存在し、それらを使って一つにまとめます。allってなんだよってなるとおもうのですが、図の目標のレンズを編集モードで開き、SAQLモードにするとこんな形になっていることがわかります。

画像3

なるほど、こいつのデータはallなのかと。

5行目はこうです

result = foreach result generate sum(q2.'Amount')/sum(q.'Target_Amount__c') as '結果';

q2つまり達成金額のAmount(商談金額)を足したもの / 目標金額を足したものを結果というカラムに表示しましょうという意味です。

なるほど簡単ですね!?

ということで、簡単な計算のやり方は理解できましたとさ。多分そのうちGUIでできるようになると思うんだよ…

noteにはこれまでの経験を綴っていこうかと思います。サポートによって思い出すモチベーションが上がるかもしれない。いや、上がるはずです。