見出し画像

Workout Wednesdayに挑戦してみた。 #2023Week32 Can you show all values when filtering?

日々続くTableauの研鑽、、、、今回はWorkout WenesdayのWeek32
"Can you show all values when filtering?" に挑戦してみましたので、備忘録としてnoteを書き留めておこうと思います


挑戦するVizについて

今回調整するViz "Can you show all values when filtering?"はタイトルの通り、フィルターをした後に値が無いものに対しても0の値を残しておくというチャレンジになります。

目標の動作。値がないQも$0として列が残っている。

要件と本記事の対象

今回、提示されている要件は下記のとおりです。
(原文は英語ですが、下記に翻訳したものを記載します)
もろもろ要件がありますが、このnoteでは本チャレンジのメインである”顧客が販売/注文していない四半期には0を表示します。”の要件について対応方法を記載するようにします。


要件

対策の検討

通常のフィルターの場合

Tableauではダッシュボードでフィルターを設定することでほかのVizに対してインタラクティブな動作を設定することができます。

今回の課題の場合、この方法でフィルターを設定すると、下記図のように
レコードが存在しないものは表示がされなくなってしまいます。
このため、この方法ではなく工夫をして表示を残す必要がありそうです。

フィルターでは値のないところは表示されない。

対策1 欠落した値を表示してみる。

Tableauには欠落した値を表示するという機能があります。
こちらを試しに使ってみましょう。

欠落した値を表示してみた結果

すこし表示される列が増えました。
しかし、値がある2020Q4から2022Q4までの間の期間が表示されただけで、値がある範囲外の列は表示されませんでした。
違う方法を探してみましょう。。

対策2 表示レイアウトで欠落した値を表示してみる。

欠落した値を表示には別メニューからも設定する方法があります。
分析タブ→表のレイアウト→空の列を表示を試してみることにします。

空の列を表示


無事レコードのない列が表示されました。
しかし、値のないところに0を表示しなくてはいけませんので、
もう少し頭をひねる必要がありそうです。

空の列を表示できたもの

対策3 ZN関数を使ってみる。

TableauにはZN関数というNullの値のときに0を返す関数があります。
こちらを使ってみましょう。
注)今回ほかの要件に売上と利益を切り替えるという要件があるため、
下記図の式にはパラメーターの判断式で売上と利益を切り替える式が含まれています。

zn関数を試してみたもの

間期間の0は表示できましたが、残念ながらこの方法ではすべての項目に対して0を表示できないようです。
ZN関数はレコードが存在し、値がnullの場合には0を返してくれますが、
今回の場合はレコードがそもそも存在していないのでこの方法ではダメそうですね。。

対策4 パラメーターと計算フィールドを使ってみる。

ちょっと原点に立ち返り、今までの志向から変えてパラメーターを使ってみる方法を検討してみます。今回考えた手順は下記の通りです。

①カスタマー毎のグラフを選択した際、パラメーターにカスタマー名を格納する
②パラメーターに入ったカスタマー名の時に値を表示し、パラメーター外の場合は0を返す式を計算フィールドに記載する。
③ダッシュボードのフィルターを解除する。

今回作ってみた式はこちら

なんとか表示できました。
対策1~3ではフィルターしたうえで、レコードのないところに0を表示する方法を検討しましたが、対策4ではフィルターを値があるほかのカスタマーの値を0に置き換えることで0を表示することができました。
、、、難しい。

感想

今回挑戦した”値のないところに0を出すこと”はExcelでは簡単にできるため、ユーザーサイドからもちょくちょく要望として出そうなだなと思いチャレンジしました。
Tableauの基本の機能では実現が難しく、発想の転換が必要ということがわかりました。
なお、本チャレンジの出題者であるVenkateshさんは下記の記事のなかでセットを使った方法なども記載してくれています。ちょっと難易度が高そうな内容ですが、時間を見つけてこちらの方法でも試してみようかなと思います。。

この記事が気に入ったらサポートをしてみませんか?