tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:売上予測の目標の登録を試してみました

Sales Cloudユーザ向けの便利機能、売上予測の目標データ登録を試してみました。

f:id:tyoshikawa1106:20181107191630p:plain


この機能を利用するには設定で有効化する必要があります。
f:id:tyoshikawa1106:20181107191704p:plain


目標の登録方法の詳細はヘルプにまとめられています。

コラボレーション売上予測の目標データの読み込み

売上予測の目標の流れ

売上予測には実は下記のようにいくつかの種類があります。基本的には『OpportunityRevenue: 商談 - 収益』がよく利用されていると思います。
f:id:tyoshikawa1106:20181107191938p:plain


売上予測の目標の登録はデータローダかSalesforce APIによる対応が必要になります。登録には「売上予測種別ID」が必要になります。開発者コンソールで下記クエリを実行して取得するのが簡単だと思います。

SELECT Id,DeveloperName FROM ForecastingType


取得結果はこんな感じ。0Dbから始まるIDが「売上予測種別ID」です。
f:id:tyoshikawa1106:20181107192228p:plain


売上予測種別IDが確認できたらデータローダでインポートするためのCSVファイルを用意します。必要な情報は下記のとおりです。ユーザ名の列は取り込み時には不要ですが、あるとデータを準備する作業がやりやすいと思います。(...ヘルプでそう紹介されていました。)
f:id:tyoshikawa1106:20181107192352p:plain

f:id:tyoshikawa1106:20181107192509p:plain:w300


目標を取り込む際に指定するオブジェクトは「売上予測目標 (ForecastingQuota)」オブジェクトです。
f:id:tyoshikawa1106:20181107192606p:plain


項目マッピングはこんな感じです。
f:id:tyoshikawa1106:20181107192632p:plain


これで取り込み処理を実行すると売上予測の目標の列に値がセットされます。これでその月の商談の受注額が目標に到達しているかひと目で確認できるようになります。
f:id:tyoshikawa1106:20181107192808p:plain

売上予測の使い方

売上予測で確認できることはレポートと似たような感じですが、レポートよりも営業目線で必要な情報がわかりやすく表示されます。例えば対象年月のマスをクリックするとその部分に該当する商談が一覧表示されます。
f:id:tyoshikawa1106:20181107193121p:plain


また放置状態となってしまっている商談も視覚化されます。例えば現在11月なので下記の赤枠の部分は本来完了予定にもかかわらず未完了のままの商談になります。
f:id:tyoshikawa1106:20181107193427p:plain


こうした未完了商談は期限が過ぎたタイミングで再度完了予定日を調整したり、失注ステータスに更新してクローズしたりと対応することで対応漏れを防ぎ、あいまいな状態のまま放置されることを回避することができます。

売上予測とレポート

売上予測の目標を登録後、レポートを活用することでグラフ表示による比較が可能になります。目標をつかったレポート作成にはカスタムレポートタイプの作成が必要になります。下記の構成で作成してみてください。(子オブジェクト側は関連レコードの有無は問いませんの方を選択します。)
f:id:tyoshikawa1106:20181107193945p:plain


細かい条件は利用用途によって変更することになりますが例としてざっくりこんな感じ。
f:id:tyoshikawa1106:20181107194303p:plain


これで目標と商談の受注した金額を比較するためのグラフが作成できました。
f:id:tyoshikawa1106:20181107194407p:plain


レポート作成の際に商談の金額とは別に売上予測 金額という類似の項目もあるので注意してください。今回の設定手順の場合は「売上予測 金額」項目は欲しい情報とは異なる項目になります。
f:id:tyoshikawa1106:20181107194609p:plain


毎月の目標と金額の比較は上記のような感じで可能になりますが、Salesforceでは累積レポートの作成も可能です。累積レポートの設定方法は下記サイトに詳しくまとめられていました。

http://deferloader.blog.uhuru.co.jp/?p=5156


レポート設定のこの部分から集計項目を作成します。
f:id:tyoshikawa1106:20181107195001p:plain:w300


形式タブで開始日を選びます。
f:id:tyoshikawa1106:20181107195019p:plain:w300


続いて数式を記載しますがフルエディタに切り替えるとやりやすいと思います。
f:id:tyoshikawa1106:20181107195130p:plain


式は下記のような感じ。上のリンクの参考サイトの数式をそのまま使いました。

目標の累積
ForecastingQuota.QuotaAmount:SUM +
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 2)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 2))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 3)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 3))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 4)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 4))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 5)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 5))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 6)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 6))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 7)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 7))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 8)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 8))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 9)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 9))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 10)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 10))+
IF (ISNULL (PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 11)), 0, PREVGROUPVAL(ForecastingQuota.QuotaAmount:SUM, ForecastingQuota.StartDate, 11))
金額の累積
ForecastingFact_Opp.Amount:SUM +
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 2)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 2))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 3)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 3))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 4)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 4))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 5)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 5))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 6)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 6))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 7)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 7))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 8)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 8))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 9)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 9))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 10)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 10))+
IF (ISNULL (PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 11)), 0, PREVGROUPVAL(ForecastingFact_Opp.Amount:SUM, ForecastingQuota.StartDate, 11))

一見複雑ですが、よく見るとわかりやすい数式です。
f:id:tyoshikawa1106:20181107195515p:plain


項目のAPI名ですが、「ForecastingFact_Opp.Amount」というように数式用の記載のされ方になっている部分があります。API名がわからないときは挿入ボタンで挿入すると確認できます。
f:id:tyoshikawa1106:20181107195434p:plain


累積するには「PREVGROUPVAL」関数を利用しますが、下記のように空欄になって表示されることがあります。詳細行を非表示にしたりグルーピング項目を一つにすることで正しい値が表示されるようになります。
f:id:tyoshikawa1106:20181107200111p:plain


グラフの設定では通常の縦棒グラフを選択、X軸に開始日を指定してY軸に先程作成した集計項目を指定します。「+基準」で複数項目を指定できます。
f:id:tyoshikawa1106:20181107200353p:plain:w300

f:id:tyoshikawa1106:20181107200342p:plain:w300


これで累積棒グラフの表示が可能になります。(※試してみた感じではこうした累積の比較グラフを作成する際に積み上げ棒グラフとの組み合わせはできないみたいです。)
f:id:tyoshikawa1106:20181107200512p:plain


こうしてレポートを用意したあとはダッシュボードでグラフをまとめることでより便利になります。
f:id:tyoshikawa1106:20181107201100p:plain


チームの目標はもちろん、営業メンバーごとに目標と金額の比較グラフを用意するとうまくいっている人や苦戦している人を確認しやすくなり、苦戦している人がいる場合はフォローにはいるなどの判断がしやすくなると思います。


売上予測の目標を登録することでこうした便利な使い方も可能になります。

売上予測目標とSOQL

売上予測の目標はデータローダでの登録が必要になりますが、一度登録した目標は開発者コンソールから編集が可能になります。クエリはこんな感じ。

Select Id, PeriodId, StartDate, ProductFamily, QuotaAmount, QuotaQuantity, QuotaOwnerId, IsQuantity, IsAmount, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, ForecastingTypeId FROM ForecastingQuota

f:id:tyoshikawa1106:20181107201813p:plain


Salesforce APIでも取り込めるとのことなので、データ管理ようのVisualforceあたりを開発しておくと良いのかもしれません。(実装可能かは未確認ですが)