このノートはサブスクリプション型のビジネスに特有な指標の作成・可視化や分析方法を効率的に学んでいただける「サブスクデータ分析」のトライアルツアーの第1弾、「ビジネスKPIの可視化」です。
ビジネスの成長にはビジネスの現状を把握し、かつ問題を認識するための指標の定義と定期的なモニタリングが欠かせません。
そこで、こちらのノートではExploratoryを使ってサブスクリプション型のビジネスでよく使われる以下の3つの指標を計算し、さらに可視化してみたいと思います。
所要時間は20分ほどです。それでは、さっそく始めていきましょう!!
今回のサンプルデータはサブスクリプション型のビジネスの支払いデータです。データはこちらのページからダウンロードできます。
このデータは、一行が一人の顧客の月ごとの支払い履歴を表していて、列には以下の情報があります。
Exploratoryを起動したら、プロジェクト「新規作成」ボタンをクリックします。
プロジェクトを作成するためのダイアログが表示されるので、任意の名前をつけて、作成ボタンをクリックします。
プロジェクトを作成できました。
次はデータをインポートします。今回はサンプルデータとしてSaaSサービスの支払いデータを使用します。このデータは1行が1顧客の毎月の支払いを表すデータです。
データはこちらのページからダウンロードできます。
支払いデータをダウンロードできたら、ダウンロードしたフォルダを開き、「支払いデータ.csv」をExploratoryの画面にドラッグ&ドロップします。
すると、インポートダイアログが表示されます。
インポートダイアログでは左側にある項目から、データをインポートする際の設定を指定できますが、今回は設定は不要なため「インポート」ボタンをクリックします。
するとデータフレームの作成ダイアログが表示されるので、「作成」ボタンをクリックします。
データがインポートされ、データのサマリ情報をまとめた、「サマリビュー」が開きます。
「テーブル」をクリックすると、テーブル形式でデータを確認できる「テーブルビュー」が開きます。
まずはサブスクリプション型ビジネスにとっての基本指標となるMRR(月間定期収益)の可視化から始めましょう。
このデータは、一行が一人の顧客の月ごとの支払いとなっています。そこで、チャートを使ってこの支払いデータを月ごとに集計して可視化します。
チャートを作成するために、「チャートビュー」に移動します。
今回は、「バー」チャートを使ってMRR(月間定期収益)を可視化したいので、タイプに「バー」を選択します。
月ごとに収益を可視化したいので、X軸に「支払い日」を選択します。
日付型の列をX軸に選択すると、日付は自動的に「Year(年)」に丸められます。そこで「Year」をクリックして、日付の丸め処理の単位を変更します。
今回は月ごとに「支払い金額」を集計したいので、丸め処理に「月」を選択します。
これで、月ごとに「(行の数)」が集計されました。
今回は「支払い金額」を集計したいので、Y軸には「支払い金額」を選択します。
なお、「支払い金額」の隣にある「SUM」をクリックすると集計関数の変更が可能です。
デフォルトの集計関数は「合計値(SUM)」なので、今回は集計関数を変更する必要はありません。
これで月ごとに「支払い金額」を集計でき、MRR(月間定期収益)を可視化できました。
次に、前月に比べてMRRがどれだけ増減したかを可視化してみましょう。
今回はMRRと合わせて、前月からの成長金額を可視化したいので、Y軸の二番目の値に「支払い金額」を選択し、集計関数に「合計値(SUM)」を選択します。
2つ目のY軸に列を選択すると、デフォルトでは「バー・チャート・タイプ」が「積み上げ」になります。
今回は、1つ目のY軸である「MRR」とこれから計算する2つ目のY軸である「前月との差」を横に並べて表示したいため、「バー・チャート・タイプ」を「横並び」にします。
続いて、2番目のY軸の値のメニューから、「クイック表計算」、「前の値からの差」を選択します。
前の値からの差である「前月からのMRRの成長額」を可視化できました。
最後に「Y軸のタイトル」や「色(凡例)」の名称を変更して、チャートを整えます。
「Y軸のタイトル」など、チャート全体に関わる設定は、チャートタイプの右隣にあるギヤアイコンをクリックして表示される「設定」から変更できます。
「Y軸のタイトル」を変更したいときには、「軸」のタブに移動して「Y軸」を選択します。
タイトルのテキストを「MRR(月間定期収益)」に変更し、「適用」ボタンをクリックします。
Y軸のタイトルを変更できました。
続いて、「色(凡例)」を変更するために「色で分割」のメニューを選択して、
「色、グループ、並び順」を選択します。
凡例の「表示名」を変更して、「適用」ボタンをクリックします。
チャートを整えられました。
最後に、サブスク型ビジネスである意味最も重要と言えるリテンション率を可視化してみましょう。
リテンション率とは、既存顧客のうち次の月もサービスを継続した顧客の割合です。
今回はデータの中にリテンション率がないため、支払いデータを元にリテンション率を計算する必要があります。
リテンション率の計算方法は比較的簡単です。まずは以下のように、毎月の「顧客数」と「継続顧客数」を集計します。
次に「前月の顧客数」に対する「継続顧客数」の割合を計算します。
データ加工するときは、「サマリビュー」または「テーブルビュー」に移動します。
今回は「テーブルビュー」からデータを加工します。
列名の隣にある「∨」アイコンをクリックすると、データを加工・集計するためのメニューが表示されます。
今回は「支払い日(月)」ごとに顧客数を集計したいので、「支払い日」の列ヘッダメニューから「集計(Summarize)」を選択します。
集計のためのダイアログが表示されます。
今回は、「月ごと」に顧客数を集計したいので、グループに「支払い日」を選択し、丸め処理に「月」選択します。
「顧客ID」の一意な数(何種類の顧客IDがあるか)を集計すれば、顧客数は分かるので、値に「顧客ID」を選択し、集計関数に「一意な値の数(UNIQUE)」を選択します。
「プレビュー」ボタンをクリックすると、集計結果のプレビューが表示されます。
データ量が多いと、データをサンプルした結果がプレビューとして表示されます。
全件のデータを使ったプレビューを表示させたいときは「全件」を選択し、「プレビュー」ボタンをクリックします。
これで顧客数を集計できましたが、元の列名の「顧客ID」だと顧客数を集計した列であることがわかりづらいので、列名をわかりやすい名称に変更します。
値の編集ボタンをクリックして、新しい列名を「顧客数」に変更します。
再度、「プレビュー」ボタンをクリックすると列名が更新されていることを確認できます。
これで顧客数を集計できました。
続いて「既存顧客数」を計算します。
既存顧客数を計算する方法はいくつかありますが、「顧客数」から「新規顧客数」を引けば、「既存顧客数」は計算できます。
今回のデータには「支払い回数」の列が含まれているので、「支払い回数」が1回目の顧客の数を月ごとに集計することによって、「新規顧客数」が求められます。(顧客ごとの支払回数の列を支払いデータに追加する方法はこちらをご確認ください)
続いて、先程の集計ダイアログに戻り、値に「顧客ID」を追加し、特定の条件に合致する一意な値を集計する「条件に合った一意な値の数(COUNT_UNIQUE_IF)」集計関数に選択します。
条件を設定するための「列の設定」ダイアログが表示されるので、列に「支払い回数」、演算子に「等しい」、値に「1」と入力します。
この設定により、「支払い回数」が1回の「顧客ID」の「一意な値の数」を集計できます。
続いて新しい列名に「新規顧客数」と入力し、適用します。
プレビューボタンをクリックして、「新規顧客数」を集計できていることを確認したら、実行ボタンをクリックします。
実行したデータ加工の処理が「ステップ」として保存され、プレビューで確認していた形式にデータを集計できました。
Exploratoryでは全てのデータの加工や計算の処理がステップとして右側に記録されます。これらのステップは後で編集したり、ステップの順番を並べ替えたり、コピーしたり、といった様々なことができます。ステップの使い方に関する詳細はこちらのノートをご参照ください。
次に、「顧客数」から「新規顧客数」を引いて「継続顧客数」を計算しましょう。「顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
「計算を作成(Mutate)」のダイアログが表示されます。
「計算を作成(Mutate)」は「行ごと」に計算を行いたいときに使います。
今回は「顧客数」の列から計算を作成したため、あらかじめ「顧客数」の列が計算エディタに入力されています。オレンジ色は列名であることを示します。
ここでは単純に、「顧客数」の列の値から「新規顧客数」の列の値を引きたいので、以下のようにタイプし、実行します。
顧客数 - 新顧客数数
この計算で求まるのは、「継続顧客数」となるため、「新しく列を作成」を選択し、列名を「継続顧客数」に設定し、実行ボタンをクリックします。
継続顧客数を計算するステップが保存され、「継続顧客数」の列を新たに作成できました。
最後に、リテンション率を計算してみたいと思います。
そこで問題になるのが、どのようにして「前月」の「顧客数」を計算するかなのですが、lag関数を使うことで、前の行の値を取得することが可能です。
lag関数のシンタックス(書き方のルール)は以下となり、lag関数は、指定した列の前の行の値を返します。
lag(<列名>)
それでは、実際にリテンション率を計算していきます。「継続顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
「計算を作成(Mutate)」のダイアログが表示されたら、計算エディタに以下のテキストを入力します。
継続顧客数 / lag(顧客数)
なおExploratoryで関数を利用すると、関数は水色で表示されます。
この計算で求まるのは「リテンション率」になるため、「新しく列を作成」を選択して、列名を「リテンション率」に設定して実行ボタンをクリックします。
今回は最後の列に、「リテンション率」の列を作成したいので、「この列の後に作る」に「(最後の列)」を選択し、実行します。
リテンション率を計算するステップが保存され、「リテンション率」の列を新たに作成できました。
なお、キャンセル率はリテンションできなかった顧客の割合になりますので、以下にて計算することが可能です。
1 - リテンション率
そのため、キャンセル率を計算するときには、リテンション率の列ヘッダーメニューから、「計算を作成」、「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタに以下のように、先程、紹介した計算式を入力します。
新しく列を作成にチェックが付いていることを確認したら、列名をキャンセル率に変更して実行します。
キャンセル率を計算することができました。
最後に、計算したリテンション率を使って、リテンション率のトレンドを可視化します。
「チャートビュー」に移動して、チャートタブの左端にある「+(プラス)」ボタンをクリックして、新しいタブをチャートビューに追加します。
新しい、空のチャートタブが追加されました。
今回は「ライン」チャートを使ってリテンション率のトレンドを可視化したいので、チャートタイプに「ライン」を選択します。
続いてX軸に「支払い日」を選択し、丸め処理に「月」を選択します。
最後にY軸の値に「リテンション率」を選択します。今回はすでに、1行が1月のデータになっているので、集計関数に「合計値(SUM)」を選択しても問題ありませんが、今回は「平均値(MEAN)」を選択します。
これでリテンション率を可視化できましたが、Y軸の値が小数表記になっているので、数値のフォーマットをパーセント表記に変更します。
ギヤアイコンをクリックして設定を開き、「軸」のタブから「Y軸」を選択します。
「軸のラベルのフォーマット」から「パーセント(%)」を選択し、適用します。
!
Y軸のフォーマットがパーセント表記に変わりました。
最後にチャート名の隣にある「∨」アイコンをクリックして、「名前の変更/コメント」を選択します。
チャートの名前を変更して、「OK」ボタンをクリックするとチャートの名称を変更できます。
チャート名を整えられました。
これで、以下の3つの指標を可視化できました。
Exploratoryでは、様々なデータソースだけでなく、様々なステップから作成したチャートを1つのダッシュボードにまとめられます。
また、作成したダッシュボードはサーバーにパブリッシュして、ブラウザを通して、閲覧できます。
さらにパブリッシュしたダッシュボードをチームのメンバーに共有をしたり、
スケジュールを設定して、更新を自動化できます。
さらにパラメーターを設定して、ダッシュボードの閲覧者が見たい内容にデータをフィルタできます。
ダッシュボードの作り方、運用に興味がある方は以下のリンクをご参考ください。
サブスクリプション型ビジネスユーザー様向けのトライアルツアーの他のパートは下記のリンクからご確認いただけます。
次回はサブスクリプション型ビジネスの成長の「健康度」を可視化するレイヤーケーキ・チャートを作成いただきます。
今回と同じく、20分程度終えていただける内容になっていますので、是非、お試しください!
SaaSなどを始めとするサブスクリプション型ビジネスにとって重要なKPI、データの加工、可視化、統計・機械学習といった様々なデータサイエンスの手法やシリコンバレーなどでの事例を1つのページにまとめて紹介しています。
ぜひご覧ください!
<a href="" class="btn btn-primary" target="_blank">詳細はこちら</a>