Tableau備忘録1
下記のVizを作成する際に、個人的に「つまずいたポイント」をまとめました。
デザインも細部の作り込みもまだまだですが、公開用として置いてあります:
Tableauは「学んだつもり」になっていても、いざ自分でVizを構築しようとすると意外と知識が曖昧な部分が多く、それに気づく良い機会になりました…。
✅ 1.複数メジャーの積み上げ棒グラフを作る方法
🧱 単一メジャーなら簡単
1つのメジャーの内訳を色で分けたい場合は、合計で棒グラフを作成し、色にディメンションを入れるだけでOK。
🤔 複数メジャーを積み上げたいときは?
複数のメジャーをまとめて積み上げるやり方を忘れて、意外とつまずきました。
🔨 手順:
① 1つ目のメジャーで棒グラフを作成
② 2つ目のメジャーをドラッグし、軸の上にドロップ
これで複数メジャーが同じ軸上に重なります。
③ 「メジャーネーム」を色にドラッグ
色分けされた積み上げ棒グラフになります!
あとは左下のメジャーバリューシェルフに積み上げたいメジャーを追加すれば、3以上のメジャーでも積み上げ棒グラフを作ることができます
✅ 2.フィルターに関係なく「世界ランク」を表示させたい
「日本の幸福度は世界で何位か?」を項目ごとに表示させようと、RANK()
関数でランクを出したところ、すべての項目が1位に…。
❌ 原因:フィルターの影響でランク計算が正しくできていない
Tableauでは、フィルターが先に適用されてから表計算が行われるため、国 = Japan
でフィルタリングした後に RANK()
を使っても、1か国だけで順位を計算してしまうのです。
🔁 Tableauのクエリ処理順(Order of Operations)
参考:https://help.tableau.com/current/pro/desktop/ja-jp/order_of_operations.htm
✅ 解決方法:LOOKUP()+ATTR()を使ってフィルター順を制御
① 計算フィールドを作成
表計算関数であるLOOKUP() 関数を使用したフィルタ用の計算フィールドを作成します。
表計算関数では、すべてのフィールドが集計または定数である必要があるため、ATTR()で囲みます。
補足:
-
LOOKUP()
:現在行からの相対位置を指定して値を取得できる表計算関数
例:LOOKUP([売上], -1)
は、前の行の売上を参照します。 -
ATTR()
:値が一意であればその値を返し、複数ある場合は*
(アスタリスク)を返す。
表計算関数内では、ディメンションをラップする目的でよく使われます。
② この計算フィールドをフィルターに設定
これで、フィルター適用が 表計算(RANK)より後に処理されるようになり、正しくランクが表示されるようになります。
📝 おわりに
Tableauでは「できるはず」と思っていても、操作順序や処理順(Order of Operations) によって思ったような結果が出ないことが本当に多いです。
Vizを作りながら都度「なぜこうなるんだっけ?」を振り返っておくと、確実に実力がついてくる気がします💪
Discussion