こんにちは。Turtleです。

早いことに、もう2020年の半年が終わったのですね。意識しないと残り半分もあっという間に終わってしまうんだろうなあ…

と書きながら壁を見てみると、蜘蛛(実話です)。虫は苦手じゃないし、別に何も驚かないんだけど。寝ているときに自分の顔に登っていたかもしれないと思うと、ちょっとだけ嫌だなあと思う。自分が寝ているときは虫も寝ていてくれたらうれしいなあ。

…虫って眠るの?(無知)

それでは前置きはこれくらいに。
今回は折れ線グラフにおける欠落値の対処法を紹介する。

使用するデータはこちら

1. 問題

先程ダウンロードしたデータをビルドして、

widget:折れ線グラフ
X-軸:Days 単位 date
値:Total value

に設定する。


完成したグラフをよく見てみると…あれ、途中で折れ線が途切れていたり、点が存在していたりする。この原因はなんだろう?

こういうときはプレビューを見てみよう。
ElastiCubeに戻って確認。

なるほどね。値が入っていない日付があるんだね。【Data Modeling】データが無い時に累計が歯抜けになる問題に対処する に書かれていたように、「BIはないデータは見せることができない」というのが原因だね。

だからといってこのまま線が途切れていたり点が存在しているのはものすごく見た目が悪い。こういう場合、どうやって対処したら良いだろうか?

2. 解決策

2-1. CASE関数

普通に考えて、「値が入っていない = 0」として捉えられる。だから、数式でNULLのところは0として表示するようにしたら問題は解決するだろう、というのがぼくのアプローチだった(0はちゃんとした値だからね)。

先程の 値:Total valueの数式エディタを開いて以下の数式を入力する。

CASE
WHEN ISNULL([Total value])
THEN 0

ELSE [Total value]
END

(CASE関数についてはこちらを参考に)

結果を見てみると…


おお、ちゃんと繋がった。これで線が途切れていたり点が存在しているときでも安心だね。

ではまた!

…で終わらせられないよねさすがに。Sisenseユーザーはこの解決法を見て「おいおい、もっと簡単に解決する方法があるじゃないか」と鼻で笑っていることだろう。実はこの問題、もっと簡単に解決する方法が存在するので、その方法を次に紹介する。

2-2. 欠落値をゼロと表示する

値 を最初のTotal valueにし、修正前の状態にする。そしてメニューを見てみると…


んんん?「欠落値をゼロと表示する」とある。ここをクリックしてみよう。するとグラフは以下のようになるはずだ。


お。ちゃんと繋がった。わざわざ数式を書かなくても、一瞬で終わるじゃないですか…Formulaに憑りつかれていたTurtleは、この方法に後に偶然気づいたのだ。これに気づかなければ、未来永劫数式で解決していたことになる。恐ろしい…

3. 補足(Pastyear)

先程、折れ線グラフで線が途切れていたり点が存在するときは、わざわざ数式を書かなくても「欠落値をゼロと表示する」で解決すると書いた。実は、これでは完璧に解決できない例外が存在する。以下では、その一例を紹介する。

まずは一番最初の状態に設定。

Widget:折れ線グラフ
X-軸:Days 単位 date
値:Total value

設定後、Total valueを複製する。


複製してできた値で、「メニュー → クイック関数 → 過去の値 → 前年」を選択。これで前年の値を折れ線グラフに表示させて年度比較ができるようになるんだったね。(詳しくは 【Formula】会計年度の対応とPastYear関数 を参考に)


出来上がったグラフを見てみると、Total valueもPast Year Total valueも折れ線が途切れたり点が存在したりしているね。


でも大丈夫。我々はもうこの問題を簡単に解決することができる。Total valueもPast Year Total valueも「欠落値をゼロと表示する」でサクッと線を繋いじゃおう。

よし。途切れていた線も繋がったことだし一件落着!

ではまた!

…とはならないんだよね。よーくグラフを見ていくと、おかしなところが発生しているのが分かるんだけど、いったいどこでしょう?(探してみてね)

正解はこちら。


よく見ると、Past Year Total valueがずーっと0で入っているのが分かる。データには2019年と2020年しか入っていないので、2019年のところにPast Year Total valueがあってはいけないよね。なるほど、「欠落値をゼロと表示する」にはこういう落とし穴があるのか…

けど、「欠落値をゼロと表示する」を外してしまうと折れ線が途切れ途切れになってしまう。折れ線が途切れてしまう問題と、PastYearにずっとゼロが入ってしまう問題と、どちらも解決する方法はないだろうか…?

実は、この問題を解決することができるのが、先程役立たず扱いしてしまったCASE関数なのだ。Past Year Total valueの数式エディタを開き、以下のように変更する。

CASE
WHEN ISNULL(PastYear([Total value (1)]))
THEN 0
ELSE PastYear([Total value (1)])
END

そして「欠落値をゼロと表示する」を外してみよう。完成したグラフを見てみると…


おおっ!!2019年にずーっと0で入っていたPast Year Total valueが消えている!なおかつ折れ線の途切れもないし…

というわけで、なんでもかんでも「欠落値をゼロと表示する」で完璧に解決できるわけではない。どんな解決策にも例外は必ず存在するよね。以上、その一例であるPastyearでした。

4. まとめ

今回は、折れ線グラフがデータがないのが原因で途切れていたり点が存在するときの対処法について解説した。

わざわざCASE関数を使って数式で書かなくても、「欠落値をゼロと表示する」を選択するだけで折れ線は繋がるので非常に便利。数式より先にこっちに気づきたかったな…

でも数式での解決法が頭になかったらPastyearのような例外には対応できなかったし…結論、引き出しは多いほうが良いね。

それでは!

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