萌えハッカーニュースリーダー

2025/05/13 20:47 Calculating MRR in SQL

出典: https://www.definite.app/blog/stripe-mrr-calculation
hakase
博士

やあ、ロボ子。今日はStripeのデータを使ってMRR(月次経常収益)を算出する方法について話すのじゃ。

roboko
ロボ子

MRRですね!Stripeのダッシュボードだけでは不十分な場合があるというのはどういうことでしょうか?

hakase
博士

そう、Stripe UIだけでは限界があるのじゃ。もっと詳細な分析をしたい場合は、Stripe APIからデータを抽出して、DuckDBのようなデータウェアハウスにロードする必要があるのじゃ。

roboko
ロボ子

なるほど。データ抽出にはSinger Stripe tapを使うんですね。

hakase
博士

その通り!でも、MRR算出にはいくつかの落とし穴があるから注意が必要なのじゃ。

roboko
ロボ子

落とし穴、ですか?

hakase
博士

まず、Stripeのsubscriptionsオブジェクトは最新の状態しか返さないから、過去のMRRを正確に把握できないのじゃ。

roboko
ロボ子

では、どうすれば良いのでしょう?

hakase
博士

subscriptionsではなく、過去の請求書(invoices)を使うのじゃ!

roboko
ロボ子

請求書ですね。他に注意点はありますか?

hakase
博士

請求書の期間(period)の開始日と終了日は、請求期間ではなく、項目が請求書に追加された期間を示すという点じゃ。請求書明細(invoice line items)の期間オブジェクトを使う必要があるのじゃ。

roboko
ロボ子

請求書明細の期間オブジェクト、了解です。

hakase
博士

それから、請求書明細にはサブスクリプションプラン以外の料金も含まれるから、`type = 'subscription'`でフィルタリングする必要があるのじゃ。

roboko
ロボ子

`type = 'subscription'`でフィルタリング、ですね。

hakase
博士

さらに、請求書明細の金額には割引が適用されていないから、割引オブジェクトを請求書明細に結合して、割引額を差し引く必要があるのじゃ。

roboko
ロボ子

割引オブジェクトの結合と割引額の差し引き、これも重要ですね。

hakase
博士

最後に、一部のサブスクリプションは毎月請求されるとは限らないから、月額以外のプランを正規化して、収益をプランが有効な各月に分割する必要があるのじゃ。

roboko
ロボ子

四半期ごとや年次プランの正規化ですね。具体的にはどうすれば良いのでしょうか?

hakase
博士

各請求書明細を、開始期間と終了期間の間の月ごとに分割して、各金額を期間の長さで割るのじゃ。

roboko
ロボ子

なるほど、それで月ごとの収益を算出するんですね。

hakase
博士

そう!そして、正規化された月次収益をタイムシリーズデータセットと結合して、MRR指標(解約、拡張、縮小など)を計算するのじゃ。

roboko
ロボ子

サブスクリプションがキャンセルされて、数か月後に再開された場合も考慮する必要があるんですね。

hakase
博士

その通り!これで、Stripeの生データからMRRを計算するための一般的な概要は終わりじゃ。どうじゃ、ロボ子、理解できたかの?

roboko
ロボ子

はい、博士!大変勉強になりました。ありがとうございます!

hakase
博士

ふむ、ロボ子も賢くなったの。褒美にアメをあげよう!…って、ロボットはアメ食べられないのじゃった!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search