Tableauでのカレンダーの作成方法を理解する
Vizを作るためにTwitterで面白そうで勉強になりそうなダッシュボードを作ってる方はいないかと探していたところ、以下のtweetが難易度的にも良さそう、と考えました。
Tableau User Group - View Recordings from Past Events by Ethan Lang
課題感
- Tableauにおけるカレンダーの作成方法がいまいち分かっていない
- 前回に引き続き、表計算を理解したい
まずはカレンダーの作成方法を理解するために、先人の方が作ってくれたダッシュボードを眺めて、疑問点を調査していきます。
先人の方が作ってくれたもの(Janというシート)を残して、検証用にいろいろ作業を行っています。
- "”の意味が分からない
こういう場合は、手っ取り早く外してしまうと挙動を理解しやすいので、外してみます。
- 日付は不連続値を利用するよう注意する
元々はフィルターを利用して年月が一意になっていましたが、複数選択した際の挙動を検証しました。
最初、""になっていたものをINDEX()で検証しているのは、不連続値を利用したときに、INDEX()が増えるのかを検証したかったためです。
この際、日付を連続値として利用すると、INDEXが増えてしまいます。
ただ、この際の挙動がINDEXに慣れておらず理解できませんでした。
2021年の1月の火曜日からINDEXが増えているのは、5~9日が、2020年1月の2週目に存在しているため。
同様に行に着目すると、2020年1月1~4日が存在しているため、2021年1月1~2日は、日付が被っています。
そのため、INDEXが増えた、という感じです。
そもそも論の話だと、曜日や週が不連続のデータを利用していることと、表計算を使いたいので日付データも不連続にする、というのが自然ですね。
実際にカレンダーを作成していく
ある程度、カレンダーの作成ロジックを理解したところで、サンプルスーパーストアのデータを利用して自分でも作ってみます。
今回は、前日分との利益比較カレンダーを作成してみました。
単純にカレンダーを作るだけだと面白くないので、日別で利益を表示する。
かつ、それが前日と比較して上がったのか下がったのか?をコンディションとして眺められるものを作ってみました。
(Tableauで重要視されている、Preattentive Attributes、という点を考慮すると、カレンダーでやらない方が良いのですが、今回は勉強用なのでご承知おきください)
前回の記事に引き続きですが、売上データでカレンダーを作ろうとすると売上自体が存在しない日付があります。
それをZNを利用して0埋めすることはできません。
そこで最後の方に宿題にしていた、データブレンドによる0埋めを検証してみました。
ちょっと色合いが微妙かもですが、日々の利益をカレンダーの内部に埋め込み、利益が無かった日付は0埋めできました。
カレンダーによくある機能だと、天気予報が挙げられると思います。
あまり使い慣れてないのもあったので、Tableauの形状を利用して前日との利益比較を行ってみました。
前日分との利益差分の集計
ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), -1)
計算式書くより、差の集計を利用した方が楽かもしれません。
前日分利益差分±判定
IF [前日利益差分] >= 0 THEN 1
ELSEIF [前日利益差分] < 0 THEN -1
ELSE 0 END
後者の計算フィールドは、どの形状が、どのデータに当て嵌めるのか?に利用するので、1とかでなくても大丈夫です。
初日のみ、前日分との利益比較ができませんが、こんな感じのアウトプットができました。
最後に
データブレンド利用すれば、0埋めが一応できる、ということが分かってよかったです。
Tableauのビジュアルを綺麗にするために、""であったり、INDEXなどを利用しているものをちょくちょく見かけますが、どういう挙動なのか?を理解するきっかけになったと思います。
オシャレなVizを作られてる方々に一歩でも近づくために、どなたかの参考になれば幸いです。
参考記事