業務でTableauを利用した際にちょっとひねった技を使う必要があったのでその備忘録として第二弾
役職に応じて見せるデータを変えたい
通常のTableauであればFilterをユーザーに設定してもらって見せるというのが一般的な流れになると思います。ただ、今回の場合は前回と同じくユーザーがログインした段階で見せたいというものになります。
営業の平社員、営業の課長さん、営業の部長さんの関連する値だけを見せたいというのが今回のゴールです。
前提条件 組織のマスタ情報がある
組織の階層を持ったマスター情報があるということが前提になります。
データイメージ
row, 部門, 部署, 役職, 人, 売上
1 Sales, 第一, 平, 山田, 100
2 Sales, 第一, 平, 田中, 150
3 Sales, 第一, 課長, 中田, 10
4 Sales, 第二, 課長, 佐藤, 20
5 Sales, 第二, 平, 松井, 200
5 Sales, 直, 部長, 長嶋, 0
課題の動き
平は自分の売り上げが見たい
課長は部署の合計が見たい
部長は部門の合計が見たい
解決策
部署、部門の合計を算出
まずはFIXED関数を利用して部署、部門の合計の列を追加します。
//Team_Sales 部署の売上
[Team_Sales]
{FIXED [部署]:SUM([Sales])}
//Group_Sales 部署の売上
[Group_Sales]
{FIXED [部門]:SUM([Sales])}
ここで利用するのがFIXED関数になります。
[Team_Sales]であれば同じ部署のSUM([Sales])の値が返ってきます。
FIXEDなどのLODについては下記のリンクとかわかりやすいです。
https://ex-ture.com/blog/2017/12/04/%E5%88%86%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%84lod-fixed%E7%B7%A8/
Userによって見せる列を変える
表示したい内容をUserの役職に応じて変更する
//表示したいSales
[Related_Sales]
CASE [役職]
WHEN "平"
THEN [Sales]
WHEN "課長"
THEN [Team_Sales]
WHEN "部長"
THEN [Group_Sales]
END
表示したい場所に[Related_Sales]を入れて
最後に
人 == USERNAME()
でFilterをかければ必要な人のデータだけを抜き出すことができます。
以上