Power BI DAX関数を使用して、顧客分析のひとつであるデシル分析を行ってみた。
・自己紹介
佐賀県の小売業で、情シスを行っています。
夏も近づいており、地酒である光栄菊のSUN(酸)BUSRSTを買ってみました。
・内容
現在、基幹システムから抽出した売上データ等を元に分析を行ってくれる会社があるのですが、分析の資料がエクセルで作られており、汎用性が少ないと、その資料で使われているデシル分析について、Power BIのDAX関数にて出来るのではないかと思い挑戦してみました。
エクセルでもらっている分析資料の一部
・デシル分析とは
購買履歴データをもとに全顧客の購入金額を高い順に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
・モデリングでテーブルの結合を行う。
顧客情報とリレーション結合を行う。
すごしずれが生じてはいるが、10等分に分割されている。
・まとめと今後の課題
デシルランクを表示することには成功したが、会社単位・店舗単位でのデシル分析の場合も考える必要があるのと、顧客分析のもう一つの分析であるRFM分析にも挑戦していこうと思う。
この記事が気に入ったらサポートをしてみませんか?