Cluster,Inc. Advent Calendar 2018、5日目の記事です。
クラスター社ではOKRを定めて仕事を進めていて,KR(Key Result)を主にRedashでまとめて見れるようにしています.
どういう数値(グラフ)の見せ方をすれば勘違いや誤解が生まれないかを模索しながら改善していった記録を紹介します.
1. とりあえず実績値をそのまま見せる
- まぁとりあえず...という感じ
- OKRでは3ヶ月程度の期間を通してKRを追うため,実績だけ見せられても微妙だった
- 目標にどれだけ足りないのか? あとどれぐらい期間があるのか? などがパッと判断できない
SQLをがんばって,x軸をOKRの期間に,y軸をKRの目標数値に固定することもできましたが,KRはストレッチゴールを置くという制約とあいまって期間の最初のほうは実績値が小さすぎになり何もワカラン...というグラフができたりしましたので却下😔
という感じだったので次
2. 予測線を出してみる
実際にSlackに投げられた画像です.
- 単純に線形回帰してみただけですが,この期間だと順当にいけばここまでか〜,みたいなのが見易くなりました
- あくまで赤は予測線,青は実績値だったのですが,赤線の通りに進んでるからOK(実績値から引いてるので当然そうなる)という見方をする人が出てきてしまいました
というわけでこれもイマイチだったねということで次
余談:Redashで線形回帰する小技
RedashはSQLを書くしかないので,素直にやるなら線形回帰の式をSQLで書くことになります.
ただどう考えても面倒だったので,Google Spreadsheetと連携する形で実現することにしました.
Redashで元ネタを生成する
単純に実績値だけを取るクエリを書きます.
できたら実行/保存して,結果をCSVで取れるURLをコピっておきます.また,自動更新をONに(更新間隔は適宜)しておきます.
Redashのクエリ結果(CSV)をGoogle Spreadsheetに取り込む
Spredsheetのimportdata
関数1で外部のCSVを取り込めるのでサッと取りこみます.
あとは LINEST関数 でえいやっと傾きと切片を求めておきます.
あとは別シート(※後述)で,求めたパラメータをもとに期間内の各日付における予測値を算出しておきます.
Google SpreadsheetをRedashに取り込む
ここまでで,実績値と,それを使った線形回帰による期間内の予測値が手に入ったので,今度はそれをRedashに持ってきます.
データソースとしてGoogle Spreadsheetを追加 + 上で作ったSpreadsheetの共有設定にRedashを追加(GCPのService Accountの設定が必要)したうえで,
とすると,SpreadsheetのデータがRedashで見れるようになり,エイヤッとまとめてグラフにすると,実績値と線形回帰の結果をいい感じに同時に表示できるようになります.
ちょっと回り道感はありますが,SQLで頑張りすぎる必要がなくなるのと,グラフ化や通知は(Redashのbotを使ってるのもありますが)再利用できて,むしろメンテナンスはしやすくなりました(当社比)
3. 現実との乖離を分かりやすくする
2で作ったシートに,$(目標数値 - 実績値) / 日数$から計算される目標値を追加しました.
ここまでやると,現実と目標数値にはだいぶ乖離があることが一目瞭然になり,このグラフを見て誤解を生むことは概ね無くなった気がします.(目標が高すぎたのはまた別の話...😇)
まとめ
- 毎日見る数値/グラフはその意味がパッと見で把握できるようになっていると説明の手間なども無くなって捗る
- SQLだけで頑張らず,ツールごとの得意分野を組み合わせて使と捗る
-
importdata
は1時間1回ぐらいの頻度で勝手に取りにいってくれる(閉じていても大丈夫)ようです. ↩