古くは牛乳配達や新聞配達から、現在ではクラウドサービスや保守契約、動画配信サービスなど、さまざまな業態において定期売上/サブスクリプション型のビジネスが行われています。
そのようなビジネスにおいて、地味に大変なのが売上見込の管理です。年間でざっくりと売上見込みを計算するのであれば大したことはないのですが、月別に正しく金額を展開していこうとするとそれなりに大変な作業です。
ExcelやPower BIで利用できるPower Queryという仕組みを使えば、このような繰り返し型のデータ集計も割と簡単に行うことができます。
本記事ではサンプルデータを使って、Power BIでの実装方法をステップバイステップで解説していきます。
Power BIのサンプルデータもご用意していますので、手っ取り早くイメージを掴みたい方はこちらを。
定期売上/サブスクリプション型の売上見込管理
以下の例を考えてみましょう。
ITサービス事業をやりながら、給食と新聞の配達をなぜか行っている企業があったとします。このような企業では、クラウドサービスやシステムの保守料、各種定期配達などが月額サービスに該当します。それらのサービスは1年以内の任意の月数を指定して契約可能な条件になっているとします。
これらの月額サービスの売上を月別に正しく予測するためには、以下のように契約台帳的なデータを月別に展開して売上明細的なデータを作る必要があり、これをExcelでやろうとするとなかなか面倒です。

このような作業はサクッとPower Queryで自動化してしまいましょう。
Power BIでの実装方法
ここからStep by StepでPower BIでの実装方法を解説していきます。
データの読み込み
まずは契約台帳的なデータをPower BIで読み込んでいきます。今回はExcelで作成した以下のサンプルデータを利用します。

実際には基幹システムや、DataverseやKintoneのようなローコードツールでこのようなデータを管理していることが多いでしょう。
適宜、データソースに接続してデータを取得します。

データソースに接続して、「データの変換」に進みます。

繰り返しの処理
今回のサンプルでは”月数”という項目があるため、この項目を使って売上を繰り返し計上する処理を入れていきます。
Power Queryで繰り返しの処理をいれるときは、列の追加→カスタム列を追加して繰り返し用のリストを入れ子にします。
カスタム列の名前を”月別展開リスト”に変更し、カスタム列の式には以下の内容を入力します。
これは0から”月数-1″分のリストを作成してねという意味になります。終わりを”月数-1″にしているのは0から始まるからです。

追加された”list”のところにカーソルをあてると中身を確認することができます。12ヶ月の契約であれば0から11までの12回分を繰り返して売上を上げましょうねという感じです。

この「月別展開リスト」という列を”展開”してあげれば、1つの契約を月別に展開することができます。月別展開リストという列名の右横にあるアイコンを押して、新しい行に展開するを選びます。


売上計上日を計算
ここまでくれば大体完成なのですが、今のままでは明細単位で何月に売上が上がるかがわかりません。
そこで再度、列の追加→カスタム列を追加から「売上計上日」という列を追加して、カスタム列の式のところに以下のように登録します。
これは開始日に対して”月数”を足した日付を計算する処理です。これにより、毎月売り上げを計上していく処理をPower BIの中で再現することができます。

データ型は日付を選択しておきましょう。

最後に列の選択を使って、集計に使わない列を削除しておきます。

レポートの作成例
これで、閉じて読み込むを押せばいい感じに分析できるデータが作成されますので、あとは適宜グラフ化するなどしていけばOKです。

まとめ
このように、Power Queryを活用すれば難しい計算式やマクロなどを使わなくても簡単に定期売上/サブスクリプション型の売上見込を管理することができます。
当社の場合では、Power Appsのモデル駆動アプリで契約情報を管理しており、そこから今回の手順で売上見込を集計するPower BIレポートを作成して運用しております。
クラウド事業者など、サブスクリプション型のビジネスをメインで行っている企業であれば、そもそもこのようなレポートは基幹システムから出力可能でしょう。
しかし、”既存の事業をサービス化する”みたいな流れの中で、定期売上が増えてきて見込み管理が大変ですといった企業であれば、このような管理の仕方というのは非常に有効なのかなと思います。