見出し画像

Power BI DAX関数を使用して、顧客分析のひとつであるデシル分析を行ってみた。

・自己紹介

 佐賀県の小売業で、情シスを行っています。

 夏も近づいており、地酒である光栄菊のSUN(酸)BUSRSTを買ってみました。

・内容

 現在、基幹システムから抽出した売上データ等を元に分析を行ってくれる会社があるのですが、分析の資料がエクセルで作られており、汎用性が少ないと、その資料で使われているデシル分析について、Power BIのDAX関数にて出来るのではないかと思い挑戦してみました。

エクセルでもらっている分析資料の一部

画像3

・デシル分析とは

 購買履歴データをもとに全顧客の購入金額を高い順に10等分
して、各ランク(デシル1~10)の購入比率や売上高構成比を算出する分析方法のこと。


・デシル分析を行うための手順を分解

 DAX関数では、デシル分析を一括で出すような関数はないため、デシル分析を行う上での計算を分解してみて考えてみた。

デシル分析を計算する上で必要な計算過程はこの3手順になると思われる。

 1.カテゴリ(顧客)ごとの売上集計

 2.顧客にランク付けを行う。

 3.ランクを元に10等分に分ける。


・デシルランクマスタテーブル作成とカテゴリごとの集計

   CALCULATETABLEにて、デシルマスタテーブルを作成し、SUMMARIZE関数にて顧客別の売上集計を計算し、デシル計算対象期間算定のため、売上日の条件を入れる。

デシルマスタ = CALCULATETABLE
(
SUMMARIZE
    ('売上’,
	 '売上'[顧客CD],"顧客別合計",
	 sum('売上'[売上金額])
  ),
 '売上'[売上伝票日付]>=date(年,月,日)
)

・ランクをつける

  RANK.EQ関数にて、カテゴリ(顧客)集計した実績を元に、順位を作成する。

ランク = RANK.EQ
 ('デシルマスタ'[顧客別合計],
  'デシルマスタ'[顧客別合計],desc)

・10等分に分ける

  1.顧客数の合計件数を算出し(最後のランク順位)10で割る。

  2.デシルランク = 切捨(売上順位 ÷ 1の結果) + 1にてデシルランクが計算される 

例:顧客数 2,000 売上順位が250の場合

  2,000 ÷ 10 =200

  INT(250 ÷ 200) + 1 = デシルランク2

デシル = 
var __Decyl = COUNTROWS('デシルマスタ') / 10 
var __rank = int(DIVIDE('デシルマスタ'[ランク],__Decyl)) + 1
return __rank


・モデリングでテーブルの結合を行う。

 顧客情報とリレーション結合を行う。

画像1

すごしずれが生じてはいるが、10等分に分割されている。

画像4



・まとめと今後の課題

 デシルランクを表示することには成功したが、会社単位・店舗単位でのデシル分析の場合も考える必要があるのと、顧客分析のもう一つの分析であるRFM分析にも挑戦していこうと思う。


画像2


この記事が気に入ったらサポートをしてみませんか?