シャローム!Sato-Gです。
清々しい札幌から蒸し暑い東京に戻った。
今回の札幌は人に会う約束がいくつかあって割と忙しかった。
20年来の友人と食事をしたお店がここ。

「築地直送まぐろと肉刺しShigi38」
まぐろも肉刺しも鮮度がよく、日本酒が進む。
あれっ?
ここは札幌だよね?
なんか東京っぽくない?
とは思ったんだけど、おいしいからいいかー
だけどちょっと引っかかるのは「築地直送まぐろ」。
もう市場は豊洲に移転したんだよな。
じゃあ「豊洲直送まぐろ」じゃないといけない。
しかし「豊洲直送」という響きから、「新鮮」「高級」というイメージは全く湧かない。
豊洲って物流基地としか思えないよね。
いつか豊洲=新鮮な魚の街というイメージになる日はくるのだろうか。

さて、前回、前々回とウィジェットの基本を学習してきた。
そこで、何の説明もせずに数式を使ってきたけど、実はSisenseの数式の書き方も解説しておかなきゃいけない。
そこで、ウィジェットの解説と平行して数式の書き方を解説していく。
そんな訳で今回はFormula(数式)の解説の第1回め。

1.クイック関数と数式エディタ

まずは、クイック関数と数式エディタを使用した場合の違いについて説明しよう。

1.1 クイック関数

【Widget】棒グラフでSisenseのウィジェットの基本を学ぶ -前編
【Widget】棒グラフでSisenseのウィジェットの基本を学ぶ -後編
で作成した簡単な棒グラフだ。
ここで顧客数を作成する時には、[追加 +]をクリックしてクイック関数を使用した。

ここで表示されるクイック関数の内容は、下記の操作で編集ボタンをクリックして表示した場合に左側に表示されるデータブラウザと同じものと考えてよい。

クイック関数はデータブラウザからカラムを指定して表示する。ここてはデータ型に応じて選択できる関数が変化する。
例えば、テキストであれば、合計や最大、最小、平均などは使えないから数式として使用できるものは「一意をカウント」のみとなる。

クイック関数で数式を指定した場合はsumやcountなどの関数は表示されず、定型的な名称が付与される。
上記はcountの例だが、クイック関数を使用した場合は以下のように命名される。

「配送金額」でクイック関数を使用した場合の表記は以下のようになる。

合計       Total 配送金額
すべてをカウント # of 配送金額
一意をカウント  # of unique 配送金額
最小       Min 配送金額
平均       Average 配送金額
中央値      Median of 配送金額
差異       Variance of 配送金額
標準偏差     Standard Deviation of 配送金額

1.2 数式エディタ

では数式エディタを使用したらどうなるか。
操作は
⑴関数の選択
⑵カラムの選択
の順番で操作するのが効率的だ。
ここでは❶の関数からCOUNTをクリックして選択し、データブラウザから会員番号を選択する。

結果、数式はCOUNT([会員番号])となる。
会員番号を注文番号に変更する時は、会員番号をクリックして「削除」し、データブラウザ側から注文番号を選択すればいい。
(ここで無理にカーソルで一文字ずつ削除しようとすつとイラっとするからやめたほうがいい)

クイック関数と関数エディタで入力する方法は見た目こそ違うものの、ウィジェット上の表示は同じになる。内部的には同じなので、当たり前なんだけど…

2. 数式でフィルター設定

Sisenseの数式を初めて触った時、正直これしかできないのかーと感じた。
実運用を考えるとこの関数の少なさは致命的だ。
実際、上で見てきたような関数しか使わないなんていうアプリケーションはまずない。
だからデモをやる時などは簡単にSUMやCOUNTを使ってウィジェットを作成するが、内心では少し罪の意識もあった。正直なところ。
でも、Sisenseのフィルターがjaqlベースであることに気づき、またフィルター設定そのものがjaqlでクエリするための設定であることを知ってから、この製品の設計思想に共感を持てるようになった。
ここでは条件式が必要となる場面で使えるフィルター設定をついて解説する。

上で作成したCOUNT([会員番号])を応用してみる。

棒=注文金額、折れ線=ユニーク会員数のウィジェットがある。
このウィジェットの会員数の内訳として、男性と女性の会員数を「同時に」表示したい。

もしあなたがExcelに慣れている人ならCOUNIF()を使いたくなるはずだ。
Sisenseではこう書く。

(数式,フィルター)

ん?意味がわからないよね。
では性別=男性を指定する時の例で説明する。

COUNT()の直後に誰に”,”を入れ、そこにフィルターとして使用したいカラムをデータブラウザから選択し、「すべての項目」をクリックする。

ここで[性別名]をクリックするとメニューが現れるので、ここで「フィルター」を選択し、フィルター設定する。

「リスト」で、男性のみチェックを入れて詳細をクリックしてみる。

ここで表示されるのがjaqlだ。
jaqlとはJASON形式で書かれたビッグデータ用のクエリ言語だ。
https://ja.wikipedia.org/wiki/Jaql
確認したら[OK]をクリックして閉じる。

フィルター名はダッシュボード内でユニークな名前になるので、わかりやすいようにフィルター名を設定しておこう。
フィルターをクリックするとメニューが表示されるので、ここで「名前の変更」を選択して編集する。今回は「性別名=男性」としておいた。
最後に()で括って完成

(Count([会員番号]),[性別名=男性])

このフィルター設定はウィジェットフィルターやダッシュボードフィルターと共通なので違和感はないと思うが、jaqlでクエリする技術は、数式でこそ真価を発揮すると僕は思っている。

これで、性別名=’男性’、性別名=’女性’の折れ線を追加し、「右」で指定すると下記のようなチャートになる。

このフィルター設定、結構使えそうでしょ?
僕はデータを抽出するのだから、論理式ではなくクエリを使ってこそ、最高のパフォーマンスが確保されるものだと思うので、この際、jaqlを勉強しておこうと決意したのであった。

3. まとめ

Sisenseで条件式を書くにはどうするの?
と思っていた人はこれで少し腹落ちしたかな。
Sisenseという製品は使えば使うほど、中で使われている技術は至って標準的な技術だ。
データ抽出はSQL92、ウィジェット設定をもっともっと詳細に行いたいならjavascript+CSS,フィルタはjaql…
エンジニアならBIという意識なしに入り込めそうなスタンダードな技術の宝庫だ。

ではまた。

この記事が気に入ったら
いいね ! しよう