タグ別アーカイブ: 会員分析

購入会員の使用金額によるランク分け&ランク別使用額の分析

【エクセルの煩雑な作業不要のまま、数字の裏側にあるストーリーを炙り出せます!!】

今回の記事では、Power BIで売上金額を購入会員のそれまでの使用金額別に前期と比較できるようにします

*上記の使用ランクは年間の金額ランク付けを行っています

購入会員に使用金額のラベルを付けて比較できるようにすることで「売上の増減の原因」「売上の傾向」を分析するのに有用な示唆を得ることができます

この方法のいいところは、気になるところをラベルから辿って深堀できることです

例えば、年間2万円未満の層が減っていると思ったらフィルターで2万円の層の会員番号にアクセスすることができます

しかも、分析作業はエクセルで行うことを考えたら遥かに楽です

エクセルで同じことをおこなおうとしたら、ユニークな会員番号及び使用金額、注文数などを数シートに抽出した上で紐づけ処理を行うしかありません

今回の記事の内容を一言で言い換えるとセグメント分析の方法の解説です

ぜひセグメント分析を効率化して、有用な分析を継続していきましょう!

使用データ

今回使用するのは注文データのみです

会員別データは使用しないまま作業を行えるようにします

*Calendarテーブルも使用します

最終的には、会員別に各値を集計したテーブルを作成します

ポイント

今回のポイントは時系列での日付整理です

日付を整理したうえで、各データを抽出して組み合わせる形になります

・使用月の開始日、終了日

・使用月前の1年間(判定期間)の開始日、終了日

時系列での日付整理にはEOMONTH関数を使用します

この関数を使用して、使用する各日付を変数に設定しておきます

今回の記事では2022年4月(と前年同月の2021年4月)を分析します

分析テーブル作成

SUMMRIZE関数

上記の各日付を使用し、前述のようなテーブルを作成します

画像に alt 属性が指定されていません。ファイル名: image-42-644x151.png

このテーブル作成は、SUMMRIZE関数を使用します

但し、画像右の「使用ランク」「月」は後から列を足します

SUMMRIZE関数のグループ化の切り口は「当月使用した会員番号」になります

こちらについては、変数でCALCULATETABLEを使用して事前に作成しておきます

VAR myTable=      CALCULATETABLE
        (

          VALUES(OrderData1[Customer ID]),            

          ‘Calendar'[Date]>=DATEVALUE(firstDay),’Calendar'[Date]<=DATEVALUE(endDay)
             )

この時に、会員番号の抽出範囲を時系列で整理した日付(firstDay、endday)を使用して指定するのもポイントの一つです

ここからはFILTER関数でうまく抽出範囲を指定しながら、SUMMRIZE関数の各列を作成します

次が実際の数式です

RETURN 

  SUMMARIZE( 

①FILTER(‘OrderData1’,’OrderData1′[Customer ID] in myTable),

②’OrderData1′[Customer ID],   

③ “当月使用金額”, 

④  

SUMX(FILTER( ‘OrderData1’, 

    ’OrderData1′[Purchase Date]>=DATEVALUE(firstDay) && ‘OrderData1′[Purchase Date]<=DATEVALUE(endDay)

            ),   

     ‘OrderData1′[Price]*’OrderData1′[Quantity]

  ),   

⑤ “年間使用金額”,   

 SUMX(FILTER(‘OrderData1’, 

           ‘OrderData1′[Purchase Date]>=firstDay_Year && ‘OrderData1′[Purchase Date]<=endDay_Year

            ),         

   ’OrderData1′[Price]*’OrderData1′[Quantity]

    ),     

⑥”年間注文数”,   

 COUNTROWS( FILTER( ‘OrderData1’,

                ’OrderData1′[Purchase Date]>=firstDay_Year && ‘OrderData1′[Purchase Date]<=endDay_Year

            ) 

   ) 

  )

ここから上の数式のポイントだけを抜粋して解説します

①では使用元のテーブル指定しますが、「in」を使用して当月の会員のみの注文データ(myTable)に絞り込みます

②ではグループ化、集約の切り口を指定します

③④では、SUMX関数を使用して判定期間(当月前)の使用金額を抽出します

⑤⑥では、COUNTROWS関数を会員毎の判定期間での注文数を抽出します

IF関数

SUMMRIZE関数でテーブルを作成したら、IF関数でラベル分けを行います

IF関数は「新しい列」で追加します

IF関数の条件式(金額)はビジネスの状況に応じて適したものにする必要があります

こちらはあくまで事例です

使用ランク = IF(ISBLANK(‘2022年4月購入者分析'[年間使用金額]),”1.新規”,if(‘2022年4月購入者分析'[年間使用金額]<20000,”2.2万未満”,”3.2万以上”))

もし、前年のテーブルも作成して1つのマトリックス表の中で比較したい場合には、UNION関数で2つのテーブルを一緒にします

その際、テーブル内で各テーブルが区分できるように、各テーブルに「月」の列を追加しておきましょう

<まとめ>

今回は年間の使用金額でセグメント分析する方法を解説しました

様々なDAX関数を使用しますが、一番ポイントとなるのは「EOMONTH関数」で当月、判定期間(年間)の関連日付を整理することです

ぜひこの点は意識していきましょう

最後に、

今回の手法を使うと会員分析の精度は格段に上がります

更に精度を上げるには継続的に分析を行い、会員ランクの見直しやランク別の特徴の蓄積を行うことです

できたら、ランクを更に分解して「購入商品別」にも分類できるようにすると、もっと分析の精度が上がります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

DAXで定量的にランク分けして集計を行う~分析の基本~

【分けることが分析の基本です。DAXを使用して一発で定量的なランク分けを行いましょう!】

今回の記事では修正が面倒なIF式を使わないままDAXで定量的に分類を行います

仮にエクセルで同じことを行うのであれば「VLOOKUP関数(近似値検索)」やIF式を組み合わせて行う必要があります

DAXであれば一つのメジャーをすれば一発で集計できます

使用するテーブル

使用するテーブル:DATAは次のテーブルになります

ランクテーブルの作成

まずはDAXでランクテーブルを作成します

エクセルなどでランクテーブルを作成した上でPower BIに取り込むよりずっと楽です

ランクテーブルの作成には「DATATABLE関数」を使用します

DATATABLE関数は2つのパートに分かれています

1.列の作成⇒列名と列の形式を指定します(例:”NO”、INTEGER:数字形式、STRINGで文字列形式)

2.列の中身の作成⇒{}の中に、更に{}を使用して行を表現します

今回のDAXの中身は次のようになります

RankTable = DATATABLE(

“NO”,INTEGER,”NAME”,STRING,”Min”,INTEGER,”Max”,INTEGER, 

{

  {1,”A”,50,200},  {2,”B”,30,50},  {3,”C”,0,30}

 }

)

ランク分けのメジャーの作成

ランク別にカウント

ここからは前述のランクテーブルを使用してランク別にカウント処理を行います

つまり、DATAテーブルの金額列とランクテーブルの各行を互いに評価する形になります

ですのでFILTER 関数が2つ(DATA、ランクテーブル)出ててきます

Count_by Segment = CALCULATE(

    COUNTROWS(‘DATA’),

    FILTER(‘DATA’,   

  NOT(ISEMPTY(

         FILTER(‘RankTable’,NOT(ISBLANK([金額]))&&’RankTable'[Min]<[金額]&&’RankTable'[Max]>=[金額])

        

      

   )
)

上記に出てくる「ISEMPTY関数」「ISBLANK関数」についてはこちらをご参照ください

ランク別の合計金額

ランク別に合計金額を集計する場合にはCALCULATE関数内でSUM関数を使用します

SUM_by Segment = CALCULATE(

    SUM(‘DATA'[金額]),   

  FILTER(‘DATA’,(省略)

<まとめ>

今回はDAXを使用してランク分けする方法について解説しました

DAX式は少し複雑ですが、一度作成してしまえば何度でも使いまわすことができるのでとても便利です

ぜひ有効活用してみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ