ユニット・エコノミクスは1人の顧客を獲得したときに、獲得にかけたコストに対して、どの程度のリターンが得られるかを割合で表した指標となります。
そして、CLV(顧客生涯価値)をCAC(顧客獲得コスト)で割ることで求めることができます。
一般的なSaaS企業において、3を超えることが望ましいと言われています。
今回は、2つのサンプルデータを使ってユニット・エコノミクスを計算していきます。
1つ目のデータはサブスクリプション型のビジネスの支払いデータです。データはこちらのページからダウンロードできます。
このデータは、一行が一人の顧客の月ごとの支払い履歴を表していて、列には以下の情報があります。
2つ目のデータは、このビジネスのコストに関するデータです。データはこちらのページからダウンロードできます。
このデータは、一行がとある月のコストに関する情報を表していて、列には以下の情報があります。
今回は前述した2つデータから、以下のようなテーブルを作成します。
このようなテーブルを作成できれば、ユニット・エコノミクスを計算するために必要な情報が揃うので、まずは上記のテーブルを作成します。
MRR(月間定期収益)は、それぞれのユーザーが払った金額の月々の合計値になるため、月々の支払い金額を計算するだけで簡単に計算できます。
支払い日の列ヘッダーメニューから、「集計」を選択します。
集計のダイアログが表示されたら、グループに「支払い日」を選択し、日付の単位に「月」で切り捨てを選択します。
続いて値に、「支払い金額」を選択し、集計関数には合計値(SUM)を選択します。
最後に列名をMRRに変更して、プレビューボタンをクリックします。
これでMRRを集計するための設定ができました。
次に顧客数を集計します。
集計のダイアログの値に「顧客ID」を選択し、集計関数に「一意な値の数(UNIQUE)」を選択します。
続いて、編集アイコンをクリックして新しい列名を「顧客数」に変更のうえ、実行ボタンをクリックします。
MRRと顧客数を集計できました。
続いて新規顧客数を集計したいのですが、新規顧客数をどのように計算すればいいかと言うと、元のデータに支払い回数の情報があれば、支払い回数が1回の顧客の数を集計することで、新規顧客数を計算することが可能です。
そこで、支払いデータに支払回数の情報を計算するために、集計前のデータソースのステップに戻り、「支払い日」の列ヘッダーメニューから、「表計算」、「ランキング(隙間なし)」の「昇順」を選択します。
このとき、支払い日のランキングを計算するのは、顧客ごとに日付が古い順にランキングをつけることで、何回目の支払い回数かを計算できるからです。
なお、このとき「隙間なし」を選択するのは、アップグレードのための異なる支払いが同日にあったときに、別の支払いとして扱われないようにするためです。
表計算のダイアログが開いたら、今回は顧客ごとにランキングを計算したいので、グループに「顧客ID」を選択し、プレビューボタンをクリックします。
最後に値の列名を、「支払い回数」に変更し、実行します。
これで支払い回数の情報を支払いデータに追加できました。
最後に支払い回数をもとに、新規顧客の数を集計するために、集計のステップのトークンを開きます。
集計のダイアログが開いたら、値に「顧客ID」を選択し、集計関数に「条件に合った一意な値の数(COUNT_UNIQUE_IF)」を選択します。
条件を設定するための「列の設定」ダイアログが表示されるので、列に「支払い回数」、演算子に「等しい」、値に「1」と入力します。
この設定により、「支払い回数」が1回の「顧客ID」の「一意な値の数」を集計できます。
続いて新しい列名に「新規顧客数」と入力し、適用します。
プレビューボタンをクリックして、「新規顧客数」を集計できていることを確認したら、実行ボタンをクリックします。
MRR、顧客数、新規顧客数を集計することができました。
続いてキャンセル率を計算するために、継続顧客数を計算します。
「顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタに顧客数 - 新規顧客数
と入力します。
続いて、「新しく列を作成」にチェックが付いていることを確認したら、列名を「継続顧客」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
「継続顧客数」の列を新たに作成できました。
続いてキャンセル率を計算します。
「継続顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
「計算を作成」のダイアログが表示されたら、計算エディタに継続顧客数 / lag(顧客数)
テキストを入力します。
なお、lag関数は前の行の値を取得する関数になるため、継続顧客数 / lag(顧客数)
という計算式で、前月の顧客のうち今月もサービスを継続した顧客の割合を計算できるわけです。
ただし、サービスを継続した顧客の割合はリテンション率になるため、リテンション率の逆のキャンセル率を計算するために、計算エディタの内容を1 - (継続顧客数 / lag(顧客数))
に変更します。
次に「新しく列を作成」にチェックが付いていることを確認したら、列名を「キャンセル率」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
キャンセル率を計算できました。
続いてARPUとCLVを計算していきます。
MRRの列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタにMRR / 顧客数
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「ARPU」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
ARPUを計算することができました。
続いてCLVを計算していきます。CLVを正確に計算するためには、生存曲線を利用して、CLV(顧客生涯価値)を計算することが望ましいですが、今回は簡易的な以下の計算式を使って、CLVで計算していきます。(生存曲線を利用したCLVの計算方法の詳細や、以下の数式でCLVがなぜ計算できるかにつきましては、こちらから詳細をご確認ください)
そのため、「キャンセル率」の列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタに(1 / キャンセル率) * ARPU
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「CLV」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
CLVを計算できました。
続いて、先程集計したデータにコストの情報を結合します。
「支払い日」の列ヘッダーメニューから「結合(列を追加する/Join)」を選択します。
結合のダイアログが開いたら「結合先データフレーム」にもう一方のコストのデータを選択し、キー列には「日付」を選択し、実行します。
これでユニット・エコノミクスを計算するためのデータをつくることができました。
最後にユニット・エコノミクスを計算します。
まずはCAC(顧客獲得コスト)を計算するために「新規顧客の獲得コスト」の列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成ダイアログが開いたら、計算エディタに新規顧客の獲得コスト / 新規顧客数
と入力します。
続いて、新しく列を作成にチェックが付いていることを確認したら、列名を「CAC」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
CACを計算することができました。
最後に、ユニット・エコノミクスを計算します。CLVの列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタにCLV / CAC
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「ユニット・エコノミクス」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
これで、ユニット・エコノミクスを計算することができました。