パワークエリはとても便利ですが、M言語となると使い道がよく分からないと思います
今回は、M言語を使用した実践的な分析手法を紹介したいと思います
私は以前、EC通販会社に勤めていました
EC通販では顧客の顔が見えないので、データからどういう顧客がいて・どういう行動をしているのか・を分析する必要があります
様々な分析を行いましたが、指標として一番重視していたのが「顧客の2回目リピート率」です
顧客の2回目のリピート率が何故重要なのか?
これには様々な理由がありますが、一番の理由は2回目のリピート率を少しでも改善すれば、売上が長期的に増加するからです
読者の方でも外食をした際に「あの店には2度と行かない・・・」という経験をした方も多いと思います
逆に同じ店で2度食事をして、その店に慣れてくると3回目、4回目とリピートする意欲する気が高くなると思います
ビジネスでも「2回目のリピート」というハードルをクリアすることの意義はとても大きいのです
ただし、普通にエクセルで2回目のリピート率を算出しようとするとかなり面倒です
私は一時期、IF関数で注文回数を付与して、2回目の注文だけシートを分けたりしていました
ましてや、2回目のリピートの有無別に顧客分析をしようとするとかなりハードルが高いです
ところが、M言語を使えば2回目のリピート率は意外と簡単に算出できます!
目次
ポイント
今回使用するデータは会員別の注文データです
上の画像では2回目の注文があった会員に黄色の印を付けましたが、2回目の注文があった会員もいれば、そうでない会員もいます
ここからまず、会員番号毎に注文回数を付与します
そして、上の画像の表から次のような表を作成します
上の画像では、その前の画像の表から注文回数を「1回」に絞り込んであります
結果として、会員番号の列は会員番号が重複なく並んでいます
そして「2回目判定用」なる列が追加されています
こちらは注文回数の差分です
こちらの差分は注文回数を「1回」に絞り込んだ場合には0か1になります
この列が1の会員は2回目の注文があった会員です
つまり、「2回目判定用」の列の合計を「注文回数」の列の合計で割れば2回目のリピート率が出るという仕掛けになります
(注)尚、上記の画像のデータ以前に注文履歴は無いという前提で解説を行わせて頂きます。ですので、本当は初回の注文ではないのでは?という疑問は持つ必要はありません
注文回数の付与
ポイントで解説した通り、まずは会員番号別に注文回数を付与します
こちらについての詳細については、過去の記事をご確認をお願いします
大きく分けて2つ行うことがあります
1つ目は、グループ化です
会員ID別(会員番号別)に「すべての行」でグループ化を行い、会員ID別にテーブルを作成します
次にカスタム列・作成画面にて、テーブル別にM関数/Table.AddIndexColumnを使用して連番を付与します
すると、注文回数が連番で付与されます
注文回数の差分の算出
こちらについても詳細は過去の記事をご参照願います
この差分を算出するには、パワークエリでは本来は困難な「セル単位」や「行単位」の処理に踏み込む必要があります
ポイントとなるのは、こちらも「連番」です
上の画像のように連番をつけると、連番と画面左の行番号とが対応するようになります
ちなみに、M言語は0ベースなので、実際にM言語で使用する1行目は0になります
ここから波括弧:{}を使用します
波括弧は行番号を表します
例えば、注文回数{0}とした場合には、注文回数列の1行目のデータなります
この波括弧と連番をうまく組み合わせることで、注文回数の差分を算出します
上の画像にて黄色の印を付けた波括弧内は、注文回数の各行の1つ下の行番号の値になります([注文回数]の前のDataは前ステップの名称になります)
つまり上の画像内では、注文回数列をA列だとすると<=A3-A2>と同様の計算が行われています
ちなみに、try~otherwiseとすることでエラーを回避しています
注文回数の絞り込み
上記まで行ったところで、エディタを確認すると以下の画像のような状態になっています
ここから注文回数の列にフィルターをかけます
こうすれば注文回数の列は「1」のみ、2回目判定用の列は0か1になります
ここまでくれば、後は各列を合計して2回目のリピート率を算出するだけです
合計にはM関数/List.Sum関数を使用します
上の画像では、2つの合計値を/で割り算をすることでリピート率を算出しています
%の表示にしたい場合には、List.Sum関数でリスト化した内容をテーブル化した上で%に型式を変えます
<まとめ>
今回はM言語の仕組みを使用して、2回目のリピート率を算出しました
2回目のリピート率を算出するのに、主に2つのM言語の技術を活用しました
1つ目はグループ化を通じて各グループ毎に連番を付与する仕組みです
2つ目は注文回数の差分を連番と波括弧を組み合わせて算出する仕組みです
この2つの技術を通じて、注文回数と2回目の注文有無を0か1で表現できるようにしました
今回は2回目のリピート率を算出しましたが、本当に大事なのは2回目のリピートがあった会員とそうでない会員との違いは何かを調べることです
今回作成したクエリを複製して途中のステップを削除すれば、会員番号別に注文の有無が表示できます
他のデータを会員別に紐づければ、2回目の注文があった会員とそうでない会員の購入している商品の違いなども調べることができるはずです
更に注文回数の差分を抽出する仕組みを応用して、初回から2回目までの日数なども調べることができます
M言語が本当に有効なのはこういった複雑な分析が必要な場面だと思います
特にグループ化から連番を付与する仕組みと差分を算出する仕組みは、分析作業にて使う場面も多いと思いますので、しっかり活用できるようにしておきましょう!
コメントを残す