私の場合…WOW2024 Week41
今回のグラフは今までに見たことがない(作ったことのない)タイプのものでした。データも、いつもはサンプルスーパーストアのことが多いので取り込んだ後はさっくり計算式にとりかかれたのですが、今回は少し勝手が違いました。
そもそもそれぞれのメジャーについてる「FTE」って何??
ということで、データの中身を理解するところから始める必要がありそうです。
▼今回のお題
いつものことながら、いろんなアプローチがあると思うので、ぜひTableau Publicでみなさんのダッシュボードを覗いてみることをおススメします。
以下、私の場合の手順です。
1.データの中身を理解する
「FTE」を検索すると、以下のようなリソースマネジメント用語だということが分かりました。
この「FTE」が以下4種類格納されています。
・Actuals:実績
・Budget:予測
・Demand:需要
・Supply:供給
ひとつ、気になったのは「Actuals FTE」は最初の月にしかデータがなく以降は空白ということです。でも、Vizでは折れ線グラフでつながっているので、何か計算式なのか、Tableauのデフォルト機能のどこかをポチっとするのかが必要そうです。
2.全体像を把握する
・折れ線グラフが4つ、そのうち一つはメジャーにないもの→計算式が必要?
・折れ線グラフの間に差分を表す棒グラフ→開始位置の異なる棒グラフ=ガントチャート!!
・メジャーや実績/離職率、年間離職率で動的に表示を切り替え→パラメーター
3.パラメーターを作る
いつもだと、グラフから先に着手するのですが、今回は計算式を作るのにパラメーターが必要になってくるので、先にパラメーターを用意しておきます。
左側のデータペインの「▼」をクリックして「パラメーターを作る」を選びます。以下3つのパラメーターを作ります。
[Select FTE Measure]
名前:Select FTE Measure
データ型:文字列
許容値:リスト
値:Budget、Demand、Supply の3行(表示名も同じ)
[Select Actuals or Attrition]
名前:Select Actuals or Attrition
データ型:文字列
許容値:リスト
値:Actuals、Attrition の2行(表示名も同じ)
[Select Annual Attrition Rate]
名前:Select Annual Attrition Rate
データ型:浮動小数点数
表示形式:パーセンテージ、小数点:0
許容値:リスト
値:0.05~0.12までの8行(表示名は5%~12%)
4.折れ線グラフを作る
Budget、Demand、Supply
「列」に[Forecast Date]を「正確な日付」の「連続」(緑色)として配置する。
「行」に[Budget FTE]を入れます。(自動で合計になる)
続いて、[Demand FTE]を縦軸の上に持ってきて四隅にカギカッコ(「 」)のマークが表示されたところでドロップします。
※「行」が[メジャーバリュー]に変わり、「マーク」の下に「メジャー バリュー」の箱が新しく作られ、そこに[合計(Budget FTE)]と[合計(Demand FTE)]が入っていることを確認します。また、フィルターには「メジャーネーム」が追加されていると思います。
[Supply FTE]も同様に縦軸の上にドロップし、[メジャーバリュー]に追加します。
※「マーク」の下に新しくできた「メジャーバリュー」の箱にドロップしても同じ挙動になります。
Actuals/Attrition Rate
残りの折れ線グラフ(「Actuals/Attrition Rate」)は、今あるデータでは作れないので、新しく計算式を作る必要があります。
お手本のVizを見てみると、パラメーターの[Select Actuals or Attrition]で「Actuals」を選んだ時は”450”で横一列の線、「Attrition Rate」を選んだときは斜め下向きの線になります。
”450”は「Actuals FTE」にデフォルトで入っている数字(最初の月のデータ)です。
斜め下向きの線は、要件に『 実績/離職率の行は、パラメータで選択されたオプションに基づいて動的に変化します』とあるのと、グラフタイトルに『Y axis start at 450 FTE』とあるので、”450”をベースにパラメーターの[Select Annual Attrition Rate]で選択したパーセンテージをかけてどんどん減らしていく、ということが分かります。
ざっくりと以下のような計算イメージです。
<年間離職率が5%の場合>
S月:450
S+1月:450 -450*(5%/12)=448.125・・・A
S+2月:A-A*(5%/12)=446.257・・・B
S+3月:B-B*(5%/12)、、、
以降、最終月まで同じことの繰り返し
ポイントは、ひとつ前の月のデータをベースに計算を繰り返していくというところです。DATA Saber のOrdialに似たようなケースがあったような、、、というところから紐解きました。
これを計算式にします。新しく計算フィールドを作成し[Actuals/Attrition FTE]と名付けます。
//Actuals/Attrition FTE
IF [Select Actuals or Attrition] = 'Actuals'
THEN
WINDOW_MAX (SUM ([Actuals FTE]) )
ELSE
IF FIRST()=0 THEN SUM([Actuals FTE]) //A
ELSE PREVIOUS_VALUE(0) //B
-(PREVIOUS_VALUE(0) //C
*([Select Annual Attrition Rate]/12)) //D
END
END
最初のIF~THENは、パラメーターで「Actuals」を選んだ場合の挙動です。
この時は”450”を横一線なので、Window_MAX関数を使って全月に”450”を返します。
ELSE以下は、それ以外=パラメーターで「Attition Rate」を選んだ場合の挙動です。
(A)最初(FIRST( )=0)は、”450”(SUM([Actuals FTE]))です。
(B)それ以外は、ひとつ前の数値(PREVIOUS_VALUE(0))から
(C)ひとつ前の数値(PREVIOUS_VALUE(0))に
(D)パラメーター[Select Annual Attrition Rate]で選択した年間離職率の1/12をかけた値(PREVIOUS_VALUE(0)*([Select Annual Attrition Rate]/12))を
引きます。(B-(C*D))
PREVIOU_VALUE関数って馴染みがなく、私も苦手なんですが、こんな風にひとつ前の値を参照するような場合はすごく便利だなと少しだけ仲良くなれた気がしますw
これで最後の折れ線グラフの準備が整ったので、[Actuals/Attrition FTE]を縦軸の上にドロップしてグラフに追加します。
色を整える
今回は、それぞれの項目の色が指定されているので、指定の色を設定します。「マーク」の「色」をクリックし「色の編集」ボタンを押します。
※右側に表示されている色の凡例のどれか一色をダブルクリックしても同じ編集画面が開きます。
変更したい項目をダブルクリックし、右下にある「HTML」の欄に指定の色コードを貼り付けて「OK」をクリックします。
全項目に同じことを繰り返します。
ラベルをつける
線グラフの最後にだけ、線と同じ色のマークがついています。
「マーク」の「ラベル」に(色とは別に)[メジャーネーム]を入れます。
続けて、「ラベル」で「マークラベルの表示」にチェックをし、「ラベルを付けるマーク」で「終点」を選び、「開始行にラベル」のチェックを外します。同じ画面で「フォント」をクリックし「マークカラーの一致」ボタンをクリックします。合わせて、太字にしておきます。
5.ガントチャートを作る
真ん中にある棒グラフは、[Select FTE Measure]で選択したメジャーと[Actuals/Attrition FTE]との差分です。
ガントチャートの場合は、出発点のデータ(位置データ)と棒グラフの長さ(量データ)の掛け合わせになります。
出発点:[Actuals/Attrition FTE]
棒グラフの長さ:([Select FTE Measure]で選択したメジャーの合計)-([Actuals/Attrition FTE])
棒グラフの長さの計算式をつくる
新しい計算フィールドを作り[Select Measure]と名付けます。
//Selec Measure
CASE [Select FTE Measure]
WHEN 'Budget' THEN [Budget FTE]
WHEN 'Demand' THEN [Demand FTE]
WHEN 'Supply' THEN [Supply FTE]
END
もうひとつ新しい計算式を作り[Dif]と名付けます。
//Dif
SUM([Select Measure])-[Actuals/Attrition FTE]
ガントチャート作成
「行」に[Actuals/Attrition FTE]を入れます。
「マーク」の「Actuals/Attrition FTE」で「ガントチャート」を選び、すでに入っている「メジャーネーム」の色とラベルを削除します。
続けて「サイズ」に[Dif]を入れると棒グラフが出現します。
下の方の縦軸(Actuals/Attrition FTE)を右クリックし、2重軸を選びます。
次に、右側の縦軸を右クリックし「軸の同期」を選びます。
折れ線グラフの上にガントチャートが配置されているので、グラフの順番を入れ替えます。
「行」にある[メジャーバリュー]と[Actuals/Attrition FTE]の左右を入れ替えます。([メジャーバリュー]が右側)
6.グラフを整える
軸を整える
まず、縦軸です。
右側の縦軸を右クリックし「ヘッダーの表示」のチェックを外し、右側の縦軸を消します。
デフォルトのままだとグラフが上の方に固まってしまっているので、そこを調整します。
縦軸をダブルクリックし、「全般」タブの右上にある「ゼロを含める」のチェックボックスを外します。
続けて「軸のタイトル」を「FTE」に変更します。
横軸は「月(英語フル表記)+年」になっているので、書式設定を変更します。
横軸を右クリックして「書式設定」を選びます。
「軸」のタブで「スケール」の「日付」をクリックして、「カスタム」を選び「書式設定」に「mmmm yyyy」と入れます。
このままだと、右端にあるラベルがお手本Vizのように真横に並ばないので、軸の範囲を少し変更します。
横軸をダブルクリックして、「全般」のタブで「範囲」で「カスタム」を選び「終了値を固定」を「2027/06/01」と変更します。
※日本語版では「3月 2023」といった表示になりますが、英語版では「March 2023」と表示されているはず
色を整える
棒グラフは、選択したメジャーの20%を超えると赤色になる必要があります。そのための計算式を作ります。
新しく計算式をつくり[Color]と名付けます。
//Color
IF SUM([Select Measure])*0.2<=[Dif]
THEN 'Outside 20% range'
ELSE 'Within range'
END
「マーク」の「Actuals/Attrition FTE」で「色」に[Color]を入れます。続けて「色」をクリックして「色の編集」ボタンを押し、色を変更します。
もう一度「色」をクリックして、「不透明度」を30%にして半透明にします。最後に「サイズ」で棒線を少し細くします。
線を整える
今回は、縦横の軸線(少しだけ濃いめのグレー)、横の目盛り線(薄いグレー)が残っています。
上のメニューバーの「書式設定」をクリックし「枠線」を選びます。
右側のメニューで「行の境界線」「列の境界線」をすべて「なし」にします。
「線」の書式に移動し、「軸線」で少しだけ濃いグレー(私の場合、右から2つ目の一番下)を選びます。「行」の「グリッド線」は薄いグレー、「列」の「グリッド線」は「なし」にします。(デフォルト)
ツールヒントを整える
折れ線グラフとガントチャートでツールヒントが異なります。
<折れ線グラフ>
「マーク」で「メジャーバリュー」を選び「ツールヒント」をクリックし以下のとおり設定します。※デフォルトのまま
Forecast Date: <Forecast Date>
<メジャー ネーム>: <メジャー バリュー>
<ガントチャート>
不足している要素があるので追加します。
「マーク」で「Actuals/Attrition FTE」を選び、「ツールヒント」に以下5項目をデータペインからドロップして追加します。
・Budget FTE(自動で合計になる)
・Demand FTE(自動で合計になる)
・Supply FTE(自動で合計になる)
・Actuals/Attrition FTE
ツールヒントのFTEはすべて小数点2桁表示なので(なぜか棒グラフは小数点1桁…)、書式設定を変更します。
「マーク」にある[合計(Budget FTE)]を右クリックして「書式設定」を選びます。「ペイン」のタブで「数値」の値を「数値(カスタム)」=デフォルトで小数点2桁に変更します。
[合計(Demand)][合計(Supply)]についても同様に書式設定を変更します。
つづけて「ツールヒント」をクリックし、以下のとおり設定します。
各FTEの行は折れ線グラフと色を合わせます。
Forecast Date: <Forecast Date>
In <Forecast Date> the gap between <パラメーター.Select Actuals or Attrition> and <パラメーター.Select FTE Measure> is: <集計(Dif)>
<パラメーター.Select Actuals or Attrition> FTE: <集計(Actuals/Attrition FTE)>
Budget FTE: <合計(Budget FTE)>
Demand FTE: <合計(Demand FTE)>
Supply FTE: <合計(Supply FTE)>
タイトルを変更する
左上のシートタイトルをダブルクリックし、「タイトルの編集」で以下の通り設定します。
フォントの大きさや太さ等を整えます。
Dysplaying the gap between <パラメーター.Select Actuals or Attrition> and <パラメーター.Select FTE Measure> FTE
*Y axis start at 450 FTE
これでグラフは完成です。
最後にシート名を「FTE」に変更します。
7.ダッシュボードを作る
新しくダッシュボードを開き、「サイズ」で「固定サイズ」を選び、幅:1300px、高さ:800pxに設定します。
配置する
今回のレイアウトは、上から順に、タイトル→パラメーター群→グラフ&凡例の3段構成です。
「オブジェクト」から「垂直コンテナ」をドロップし、その中に「テキスト」をドロップします。
「テキストの編集」でダッシュボードのタイトルを設定し、フォントサイズや太さを整えます。
つづいて、オブジェクトから「水平コンテナ」をタイトルの下に配置し、その中に「FTE」を配置します。
自動で、ダッシュボードの右側に凡例が配置されるので、凡例を「FTE」と同じ水平コンテナの中(右側)に移動させます。
タイトルとグラフの間に「水平コンテナ」を配置します。(とりあえずは空のままで大丈夫です。)
ここに、パラメーター群を配置したいので、上のメニューバーで「分析」をクリックし「パラメーター」で「Select FTE Measure」を選びます。すると、ダッシュボードのどこかに(おそらく右側の凡例のコンテナ)配置されるので、それを空の水平コンテナに移動させます。
もう一度、メニューバーの「分析」から「パラメーター」で「Select Actuals or Attrition」を選びます。
今度は、「Select FTE Measure」の横に自動で配置されると思うのですが、別のところに配置されているようなら、パラメーター群のコンテナに移動させてください。
同様に、「Select Annual Attrition Rate」もパラメーター群のコンテナの右端に配置します。
凡例を整える
色凡例のタイトルがデフォルトだとお題のVizと異なるので合わせます。
「メジャーネーム」の文字をダブルクリックすると「凡例タイトルの編集」画面が表示されるので、「FTE Measure」と変更します。
※凡例オブジェクトをクリックすると表示されるグレー枠の「▼」をクリックして「タイトルの編集」を選んでも同じ画面が表示される
ガントチャートの色凡例も同様に変更します。
2つの色凡例の間を少しあけます。
最後にダッシュボードの名前を「WOW2024 W41」に変更したら、これで完成です。
Tableau Publicにパブリッシュしたら、WOWのトラッカーに登録するのも忘れずに!
▼WOWトラッカー
https://workout-wednesday.com/track-submission/