WOW2024 Week 41 People Resource Planning の解説~Tipsと手順~
問題内容ざっくり説明
元ページはこちら
人材リソースの計画に関するデータを用いて、今後の人材の予測値を分析できるようなダッシュボードを作る課題です。
要件
・ダッシュボードサイズ1300×800で作成します。
・3つのパラメーター(FTE measure, Actuals/Attrition Forecast & Annual Attrition Rate)を作成します。
・折れ線グラフを作成します。Budget FTEは#4e79a7、Demand FTEは#59a14f、Supply FTEは#b07aa1、Actuals/Attritionは#505050に配色します。
注:Actuals/Attritionの折れ線グラフはパラメーターによって動的に制御可能にします。Attritionの折れ線グラフの比率はAnnual Attrition Rateのパラメータで制御可能にします。
・選択されたFTE measureとActuals/Attrition Forecastの差(Resource gap)を計算し、その間を埋める棒グラフを表示します。
・Resource gapが選んだFTE measureの20%を超えたときに#f1afb0でハイライトします。
作成のポイント
途中で切れる棒グラフ
棒グラフは通常作成するとき0から伸びるのが普通かと思いますが、今回はActuals/Attrition FTEで止まっています。
この棒グラフを作るにはどうすればいいでしょうか?
パラメーターによって切り替わる値
上3つのプルダウンにより間のバーの位置が変わります。
Select FTE measure:選択した指標がバーの上部に位置する。
Select Actuals or Attrition:折れ線グラフの下が実際の値を横並びにするか、離職率をもとに予測値を表示するかを切り替える。
Select Annual Attrition Rate:年間の離職率の設定
Attrition FTEはどのように計算されている?
Attritionに設定した時の下降黒線について、Attrition Rateを使用して値を減らすというところまではわかるかと思いますが、具体的にどのように計算に反映しているかを精査する必要があります。
数か月分チェックしてみます。
Attrition Rate 6%で考えてみます。
2024年1月→450
2024年2月→447.8
2024年3月→445.5
2024年4月→443.3
…
これらの傾向を見ると、月をまたぐごとに0.995倍されていることが分かります。これは6%(=0.06)を12で割ることで得られる数字0.005が引かれた倍率で人数が少なくなっている、という計算になっていることが分かります。
つまり時系列に応じた累積の計算が必要です。累積の計算ってTableauでどうやって計算するんでしたっけ?
関連Tips
ガントチャートを棒グラフのように使おう
ガントチャートはただ配置するだけだと、その値の位置に線が引かれる形になります。
ガントチャートで「サイズ」にメジャーを入れるとその分その方向に伸びる、という性質があります。
これにより、「0まで伸びない棒グラフ」の作成が可能になります。
パラメーターによる値の制御
Tableau初級者から中級者にステップアップする際に学ぶ、パラメーターに応じて表示する値を変更する方法です。
例として、パラメーターによって売上と利益を切り替える方法を考えます。
パラメーター「売上・利益選択」を作成します。
データ型は「整数」、許容値を「リスト」に設定し、値を「1」「2」、それぞれの表示名を「売上」「利益」に設定します。
計算フィールド「売上・利益」を作成します。
パラメーター「売上・利益選択」について、1の時は「売上」に、2の時は「利益」に変わる、という意味の計算となります。
CASE [売上・利益選択]
WHEN 1 THEN [売上]
WHEN 2 THEN [利益]
END
これによってグラフの値をパラメーターで制御することが可能となります。
※パラメーターは文字列そのまま使用してCASE文を組んでも動くとは思いますが、数値を使用した方がパフォーマンスが良いはずなのであえて整数型を使用しています。
PREVIOUS_VALUE関数を使いこなそう
表計算関数「PREVIOUS_VALUE」は、ひとつ前の行の値をそのまま引っ張ってくるという関数になります。関数のカッコ内には1行目に入る値、すなわち初期値を返します。
いくつか例を出してみます。
PREVIOUS_VALUE(0)+10
PREVIOUS_VALUE(1)*2
PREVIOUS_VALUE(SUM([売上]))*0.8
この計算を応用することで累積の計算をすることが出来ます。
余談:LOOKUPとの違いは?
ひとつ前の値を引っ張ってくるという計算からLOOKUPを思い浮かべた人も多いのではないでしょうか。違いを見ていきましょう。
LOOKUPは、ひとつ前の行にある「カッコの中の値」を引っ張ってくるという点で差があります。今回で言うとSUM(売上)で見たときのひとつ前を引っ張って来ています。PREVIOUS_VALUEでは「ひとつ前そのもの」を引っ張ってきたうえで値を加えることが出来るのです。
作成手順
折れ線グラフの作成
まずは折れ線グラフを作成します。ワークシートを新しく作成します。
列に「Forecast Date」を連続で、行に「メジャーバリュー」を配置し、メジャーバリューは一旦「Budget FTE」「Demand FTE」「Supply FTE」を選択しておきます。
縦軸を右クリックします。
右上の「ゼロを含める」のチェックを外し、軸のタイトルをFTEに変更します。
詳細に入った「メジャーネーム」を色に配置します。色は要件で指定された色に設定していきます。
AttritionとActualsの切替機能を作る
パラメーター「Actuals or Attrition」を作成します。
データ型を「整数」、許容値を「リスト」に設定し、値を「1」「2」、表示名を「Actuals」「Attrition」に設定します。
パラメーター「Select Annual Attrition Rate:」を作成します。
データ型を「浮動小数点数」に設定し、リストに0.06~0.12を0.01刻みに追加していきます。その後、表示形式をパーセンテージに設定します。
※お手本ダッシュボードではパラメーターは以下のように設定されていました。順番がバラバラな理由は謎ですが、パラメーターの辞典で計算しておいた方がパフォーマンスは良いかもしれません。メンテナンス性が微妙だと思い今回はそのままのパラメーターを入れています
計算フィールド「Actuals/Attrition FTE」を作成する。
CASE[Actuals or Attrition]
//Actualsのときは、2024年1月に入った値を全体に表示させたいのでWINDOW_MAXで同じ値として表示させる
WHEN 1 THEN WINDOW_MAX(MAX([Actuals FTE]))
//Attritionのとき
WHEN 2 THEN
//初期値は2024年1月のデータに入っているActuals FTEの値を出せるようにする。
IF FIRST()=0 THEN MAX([Actuals FTE])
//以降は前の値にAnnual Attrition rateを年間から月間に割った値を引いた割合を累積していく
ELSE PREVIOUS_VALUE(0)*((1-[Select Annual Attrition Rate:]/12))
END
END
「Actuals/Attrition FTE」をメジャーバリューに配置し、色を要件通り#505050に設定。パラメーター「Actuals or Attrition」「Select Annual Attrition Rate:」を変更し、グラフが動くことを確認します。
Resource gapのバーを作成する
パラメーター「Select FTE measure」を作成する。
データ型を「整数」に設定し、許容値を「リスト」に設定した上で値を「1」「2」「3」、表示名を「Budget」「Demand」「Supply」に設定する。
計算フィールド「Bar Position」を作成する。
CASE[Select FTE measure]
WHEN 1 THEN [Budget FTE]
WHEN 2 THEN [Demand FTE]
WHEN 3 THEN [Supply FTE]
END
行に「Bar Position」を配置。
「Bar Position」を右クリックし、二重軸に設定。
右側の軸を右クリックし、「軸の同期」の設定をします。
「Bar Position」のマークをガントチャートに変更。
パラメーター「Select FTE measure」を表示させ、動かすことで「Bar Position」が変わることを確認する。
計算フィールド「Bar Size」を作成する。
[Actuals/Attrition FTE]-SUM([Bar Position])
「Bar Size」を「Bar Position」のサイズに配置する。
選択したFTE measureからActuals / Attrition FTEまでグラフが伸びることを確認する。
計算フィールド「Size of gap indicator」を作成する。
IF (SUM([Bar Position])-[Actuals/Attrition FTE])/SUM([Bar Position])>0.2 THEN "Outside 20% range"
ELSE "Within range"
END
「Size of gap indicator」を色に配置する。不透明度を半分程度に設定する(お手本は47%)
右側の軸はヘッダーの表示から非表示にしておく。
メジャーネームのラベルの表示
折れ線グラフを見ると、グラフの終わりに各メジャーネームが何かをラベルで表示するようにしています。この設定をしていきます。
折れ線グラフのラベルにメジャーネームを追加します。
ラベルを付けるマークを「最小値/最大値」に設定し、フィールドを「Forcast Date」、オプションは「最大値にラベル」にだけチェックを入れます。
フォントをマークカラーの一致に設定することで文字の色も線と同じ色になります。
ただし、このままだと各ラベルは線の下に配置されています。横に配置するために、横軸の範囲を調整します。
横軸を右クリックし、軸の編集から終了値を2027/6/30に設定します。
これによりラベルをきれいに並べることが出来ました。
※今後運用を考えるのであれば、Forecast DateをWINDOW_MAXした上でDATEADDで半年ぶん増やしたものを詳細にいれ、リファレンスラインを付与することでデータが更新されても自動的に右の領域に余裕を持たせることは可能かと思いますが、今回はお手本に合わせて実施しませんでした。
ツールヒントの設定
お手本にあるこのツールヒントを目指していきます。
「Bar Position」のツールヒントに「Actuals/Attrition FTE」「Budget FTE」「Demand FTE」「Supply FTE」を配置する。
ツールヒントを以下のように設定。
ただしこのままだとgapがマイナスの値で表示されてしまいます。
ツールヒント用に新しく計算フィールドを作成しても良いのですが、今回は書式設定でマイナスを消そうと思います。
サイズに配置された「Bar Size」を右クリックし、書式設定を選択します。
ペインの規定の書式設定を変更します。
書式設定を数値(カスタム)に設定してからカスタムを選び直すと、書式設定が自動的に入力されます。
このマイナスを消します。
ツールヒントにマイナスが表示されなくなります。
「Budget FTE」「Demand FTE」「Supply FTE」も同様に書式設定を行い小数第2位まで表示する設定をし、Barのツールヒントの設定は完了です。
折れ線グラフもツールヒントを確認します。
「の月」だけ削除すれば問題ないです。
タイトルの設定
タイトルについて、betweenで挟む2つの値がパラメーターで変わるように設定する必要があります。
タイトルを以下のように設定。
その他調整
お手本のダッシュボードのグラフの線に統一してみましょう。何も調整していないとき、以下の箇所にラインが残っております。
メニューバー→書式設定→枠線を選択。
行の境界線と列の境界線をなしに設定する。
線の書式設定に移動し、軸線を設定することで再現完了。
ダッシュボード作成
ダッシュボードサイズを1300x800に設定し、各ワークシートを配置する。
凡例のタイトルが「メジャーネーム」になっているので「FTE measure」に変更する。
コンテナ構造は以下のように設定(初めて構造を図示してみたんですがなんかイマイチ、、、いいやり方ご存知の方いらっしゃいましたら教えてください)
完成!
以下にパブリッシュしております。
おわりに
パラメーターによる値の制御、PREVIOUS_VALUE、細かな書式設定など今回もかなり学びのある内容でした。このダッシュボードを今後更新するときどうなる?と考えるとまた別の学びもあるかもしれません。細かなテクも是非自分のものにしてみてください。