期間とメジャーを選択できるVizを作成する時の思考過程を考える
はじめに
これまでの多くのTableauのViz作成の記事では、『〇〇をすると△△になる』という形のものがほとんどでした。しかし、実務では、『どうすれば✖️✖️を実現できるか』という視点がほとんどだと思います。
そこで、今回は後者をできるようになるためにVizを作成していく時の思考に焦点を当てて前年比ダッシュボードの作成を例に進めていきます。
「知っている」から「できる」の壁を少しでもとり除ければと思います。
前提
今回作成していくVizは「売上や数量、件数の指標を切り替えてそれぞれを指定した期間とその前年の期間の値を比較するダッシュボード」です。実際は、作り始める時に見本となるVizがあるわけではないですが説明としてわかりやすいように下記のVizが完成イメージです。
1. 必要な要素を考える
やらなければならなそうなこと
指標は売上、数量、件数で切り替えられるようにする必要がある
表示する期間を指定する必要がある
前期と今期でメジャーを分けて表現する必要がある
ここで重要なのは、「足りない材料は何か」または「既存の材料を加工する必要があるか」を判断することです。
足りていない材料
サンプルスーパーストアには売上と数量のフィールドはあるので新たに加工する必要はありません。そうなると足りていない材料は下記のようになるでしょう。
件数:オーダー数をカウントする必要がある
期間指定:開始日と終了日を指定して自由に期間を設定できるようにする
指標を切り替える仕組み:売上、数量、件数を動的に切り替える
今期と前期のメジャー:それぞれの期間のデータを分ける
指標切り替えに対応するメジャー:動的に変更されるメジャーの設定
計算フィールドやパラメータ、セットなどはこれらの足りない材料を作るための道具だと考えられます。ですので、Tableauにはどんな機能があるのかを知っておくことで引き出しを多く作り、その中から最適なものを選ぶのが大事なのだと思います。
2. 作成する順番を考える
既存のフィールドでは足りない要素を揃えられたら、それらの作成順番を考えていきます。作成する順番は「既存のフィールドを加工してできるもの」と「既存のフィールドを加工して組み合わせる必要があるもの」の2つに分けて考えると整理しやすくなります。
既存フィールドの加工
件数
期間指定で使う開始日と終了日
指標を切り替えるための仕組み
加工したフィールドを組み合わせる必要があるもの
今期と前期の各メジャー
指標の切り替えに合わせて変わるメジャー
例えば、件数はすでにあるオーダーIDをカウントするだけなので、すぐに作成可能です。一方で、今期と前期のメジャーは開始日と終了日が必要なので、まずはそのパラメータを作成する必要があります。さらに、指標の切り替えに合わせたメジャーは、今期・前期のメジャーと切り替えの仕組みが揃わないと作れません。
3. 足りていないフィールドを作成する
ここまで整理することができれば、足りていない要素を補完することで最終的なVizが作れます。
それぞれを紐解いて考える
件数
「件数」は注文数を表し、オーダーIDをユニークにカウントするだけで作成可能です。
COUNTD([オーダーID])
開始日と終了日
期間の指定は分析者が行うので、2つの日付型のパラメータ「開始日」と「終了日」を作成します。
指標を切り替えるための仕組み
「売上、数量、件数」を切り替えるパラメータを作成します。後の計算式で使いやすいように、整数型のパラメータを使用します。
パラメータを使う場面ですが、私の場合基本的に手動で値を変えたり、用意した選択肢とフィールドを突き合わせて合致した値を取ってくるといった操作はパラメータから行うと考えています。
今期と前期の各メジャー
これはまだ分解の余地があるので細分化していきます。
今期:開始日から終了日までの期間
今期売上
今期数量
今期件数
前期:今期と同じ期間の前年の期間
前期売上
前期数量
前期件数
「今期」は開始日と終了日の間の期間を指定するということになるので下記のようになります。開始日以降のオーダー日かつ終了日以前のオーダー日を指定する式になります。
[開始日] <= [オーダー日]
AND
[オーダー日] <= [終了日]
「前期」は今期で指定している期間よりも一年前の期間を指定したいということになります。そのため指定している開始日と終了日から一年引けば前期になるので下記のようになります。
DATEADD('year',-1,[開始日]) <= [オーダー日]
AND
[オーダー日] <= DATEADD('year',-1,[終了日])
今期と前期を指定する式ができたのでIF文でこれらの期間の売上などの指標を取れるようにします。今期の売上を例に下記に記載します。今期の他の指標は売上の部分を置換、前期の指標を作りたい場合は今期の部分を前期に置換すれば作成できます。
SUM(IF [今期] THEN [売上] END)
指標の切り替えに合わせて変わるメジャー
ここまでできたら先ほど作成した「指標切り替え」のパラメータを使って選択したメジャーを表示させるフィールドを作成します。例として指標切り替えで今期のメジャーを表示させるフィールドを下記に記載します。前期のものを作る場合は今期のメジャーをそれぞれ前期に置換すれば完成です。
ZN(CASE [指標の切り替え]
WHEN 1 THEN [今期売上]
WHEN 2 THEN [今期数量]
WHEN 3 THEN [今期件数]
END)
4. 要素が揃ったのでVizを作っていく
必要なメジャーが揃ったら、行シェルフにこれらのメジャーを配置し、列には「月と日」のオーダー日を配置します。しかし、現状では指定した期間以外のデータも表示されてしまうため、表示範囲を制限するためのフィルターを作成します。
日付の範囲
指定した期間のフィルターを作成するのは簡単です。ここまでで作成した今期と前期を使い「or」の条件を使えば、今期もしくは前期で指定した期間を表示するというブール値が完成します。
[今期] or [前期]
作成した日付の範囲をフィルターに入れえば冒頭で思い描いていたVizの完成です。
まとめ
パッとみた感じ少し難しいことをしているようですが、それぞれを切り分けて考えてみるとそれほど難しいことはしていません。必要な要素を切り出し、細かくして一歩づつ取り組むことで大きな課題や問題も解決しやすくなります。TableauでVizを作るのも同じで、最初から難しそうだと思って諦めるのではなく、最終的なアウトプットの要素を切り分けて細分化し、必要な要素を整理して考えてみるとそこからの筋道が立つと思います。
また、わからないことや最終的なアウトプットのイメージが定まっていないのであれば知っていそうな人、頼りになる人に相談してディスカッションするのが一番いいと思います。
まずはアウトプットイメージを組み立てる、それからそのアウトプットに必要な要素を整理する。そして、その要素を出来る限り分解し、実際に組み立てて行ってみてください。
皆様のより良いViz作りの手助けになれば幸いです。ご精読ありがとうございました。