見出し画像

2024年個人的 “変態” 計算式 3選&解説

2024年は私が本格的にコミュニティで活動した一年でした。

今回はその活動の中で出会った、、、出会ってしまった、記述自体はそれほど難しくないのに、そんなん思いつかないだろと思わず声に出してしまうような変態的な(変態だと思ってしまった)計算式についてご紹介と解説をしたいと思います。

⚠️注意!
この記事にはWorkout WednesdayやカジュアルViz作りまShowの問題のネタバレを含みます。もし、これらの問いを自力で解きたい方はブラウザバックをお願いいたします。

期待して来てくださった方すみません。。。

レッツゴー!!


連続ディメンションで軸を作る


0

さかぴーさんの投稿はこちら

さかぴーさんの WoW2024 week13の挑戦 で拝見させていただいた、実装方法には震えました。「え、0? 何それ使えるの」と思った方は私の仲間です。

要は軸新たに作るというのがこの問題のポイントでしたのでそれに気づいて私はいつも通り MIN(0) を使用して解きました (今回の問題正確にいうと使うのはMIN(0)ではありませんが)。

Tableauでは、連続メジャー(例: MIN(0))も連続ディメンション(例: 0)も、Viz上で軸を作るために利用できます。ただし、この2つには明確な違いがあります。連続メジャーはデータポイントを描画するための基準となり、一方で連続ディメンションは軸の基準点として機能します。

では、具体的に何が違うのか。

実際にやってみると、MIN(0) の場合、行の軸で0、列の軸ではカテゴリごとの売上の位置にプロットされているのがわかります。イメージ的には散布図が近いです。今回はガントチャートでサイズに売上を入れているので棒グラフのような見た目を作ることができています。

そのため、MIN() に入る値を1000万にするとガントチャートの開始位置が1000万の地点からになります。

一方、連続ディメンションだと棒グラフの向きが違うということがわかります。これは、連続ディメンションが集計された値ではなくディメンションとしての役割を果たしているためです。

また、これを1000万にしてみても、連続メジャーのように開始位置が変わることはなく、棒グラフの始まる基準点が1000万になっただけです。

ぜひこれらを理解した上で、WOW2024 week13を二種類の方法で解いてみ
てください!

<WOW2024 week13の問題>
https://workout-wednesday.com/2024w13tab/

ディメンションを表計算フィルターとして使う


LOOKUP(ATTR([ディメンション]),0)

第3回カジュアルViz作りまShow Ganekoさんより

LOOLUP関数は LOOKUP(expression, [offset]) で表記できて上記のディメンションの部分はメジャーでも問題ありません。よく使われる例としては、前年の売上を参照して前年比を計算したり、前日の売上を参照して前日との売上の差を計算したりといった用途があります。

LOOKUP関数の処理を簡単に言えばオフセット内で設定したターゲット行の値を表示すると言うことです。

それでは、一番最初に挙げた計算式をもうもう一度見てみると、この場合、オフセットで設定されている値が 0 であるため、現在の行の値を返します。つまり、ディメンションでありながらクエリパイプラインの処理としては表計算になるのです。また、これをフィルターに入れれば表計算フィルターと
して使うことができます。

引用:みのるさん 「[Tableau Tips]Tableauの計算順序(クエリパイプライン)の覚え方と、もっと細かい情報」 へ一部加筆

これ見た時思いませんでしたか?「え、ディメンションって表計算フィルターとして扱えるの」って。僕はかなり衝撃的でした。

使い所としてもランクなどの表計算をした後にその表計算の結果を保ったままフィルターをかけたい時って結構あるパターンかと思うので目から鱗なTipsでした。

ただ、このTips使い所については注意が必要です。なんでもかんでもディメンションを表計算として使えるわけではないんです。

これを使う条件としては、表計算フィルターにするディメンションを上位として下位の階層構造にあるディメンションが一つViz上で使われている必要があるということです。そうでないと下記のような複数値を参照しているとしてアスタリスクが表示されます。

サンプルスーパーストアだとカテゴリとサブカテゴリや地理的役割のあるディメンションは階層構造になるので使用できるパターンとなります。

こちらのTipsはカジュアルVizつくりまShow!第3回にてGanekoさんから出題された問題で使用されているTipsです。他の問題もギョッとなるTipsばかりなのでまだ挑戦されていない方は挑戦してみてください!!

<参考動画>
第3回カジュアルViz作りまShow

総計を操作する


FIRST() = LAST()

Workout Wednesday 2024 week35

FIRST関数は現在の行から最初の行までの行数、LAST関数は現在の行から最後の行までの行数を数える関数です。

それじゃ、どこの値ともイコールになるわけないじゃんと思いますよね。私にもそう思っていた時期がありました。

結論、この式の結果は確かに通常の行や列では値がイコールになることはありません。ですが、一つだけ例外があります。それが総計の行なのです。
実際に FIRST() = LAST() を色に入れた結果は以下のようになります。

他のディメンションを入れても同様、合計や総計の部分は個別に色を設定できるようになっているため合計の色とその他の色を変えることができます。

ここでミソなのが、Viz上の項目に対して「偽」という結果が返ってくるということです。また、色を変えることができるということは、この計算式を使って総計の値をアクティブに変更を加えることだって可能になるということです。

総計に値を任意の値に変更できるようにしようと考えた方はその思考力と発想力にただただ変態だと思うしかありませんでした。

これがどういうことなのか気になる方、WOW2024 week35に未挑戦の方は、こちらのTipsがヒントになるので挑戦してみてください!

<WOW2024 week35の問題>
https://workout-wednesday.com/2024w35tab/

最後に

「変態的な計算式」を理解することで広がる世界


この記事では、Tableauで使える「変態的な計算式」の3つご紹介と解説をいたしました。これらの計算式は、一見すると複雑でハードルが高いように思えるかもしれませんが、実際には 「データの見え方を自在に操る」ための強力な武器 です。

もしかしたら、使う機会はないかもしれないけど、自分の引き出しにそっとしまっておくことでいつか役立つ時が来るかもしれません。私は、今回紹介した計算式については衝撃的すぎたので一生忘れることはないと思います。

変態さを、理解ができない怖いものではなくて、理解のできる面白いものにする。それを武器にしていく。この過程が楽しさが少しでも伝わったなら良いなと思います。

長々と書いてしましましたが、ご精読ありがとうございました。


いいなと思ったら応援しよう!