🕌

Tableau備忘録1

に公開

下記のVizを作成する際に、個人的に「つまずいたポイント」をまとめました。
デザインも細部の作り込みもまだまだですが、公開用として置いてあります:

👉 https://public.tableau.com/views/AnalyzingWorldHappinessReport2025/WorldHappinessReport?:language=ja-JP&:sid=&:redirect=auth&:display_count=n&:origin=viz_share_link

Tableauは「学んだつもり」になっていても、いざ自分でVizを構築しようとすると意外と知識が曖昧な部分が多く、それに気づく良い機会になりました…。


✅ 1.複数メジャーの積み上げ棒グラフを作る方法

🧱 単一メジャーなら簡単

1つのメジャーの内訳を色で分けたい場合は、合計で棒グラフを作成し、色にディメンションを入れるだけでOK。


🤔 複数メジャーを積み上げたいときは?

複数のメジャーをまとめて積み上げるやり方を忘れて、意外とつまずきました。

🔨 手順:

① 1つ目のメジャーで棒グラフを作成

1つ目のメジャーでグラフ作成

② 2つ目のメジャーをドラッグし、軸の上にドロップ

これで複数メジャーが同じ軸上に重なります。

2つ目を軸へ追加

③ 「メジャーネーム」を色にドラッグ

色分けされた積み上げ棒グラフになります!

完成した積み上げ棒グラフ

あとは左下のメジャーバリューシェルフに積み上げたいメジャーを追加すれば、3以上のメジャーでも積み上げ棒グラフを作ることができます


✅ 2.フィルターに関係なく「世界ランク」を表示させたい

「日本の幸福度は世界で何位か?」を項目ごとに表示させようと、RANK() 関数でランクを出したところ、すべての項目が1位に…

全部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