Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
downsouth22
Regular Visitor

Monthly Recurring Revenue Model-Upsell/Downsell Question

Hello,

 

I am working on creating a Dashboard that displays monthly MRR and am having trouble creating measures that will give me the correct values at the row/customer level across every month/year. 

 

Every formula seems to work all the way down to the customer level except upsell and downsell of existing customers. Any ideas what I need to do to allow the measure to make it work at the customer level?

 

The formatting would be :

 

MRR

New Adds

Ramp

Non-Start

Upsell

(Downsell)

(Churns)

 

Here are the meassures I have so far. Posting these in case these may be causing some of my issues.

 

Total MRR = SUM('Cohort Flat File'[Revenue])
 
Previous Months MRR = CALCULATE([Total MRR],PARALLELPERIOD('Date Table'[Date],-1,MONTH))
 
Added Revenue = CALCULATE(SUM('Cohort Flat File'[Revenue]), 'Cohort Flat File'[Start Date] = 'Cohort Flat File'[Ending Date])
 
Ramp = CALCULATE(SUM('Cohort Flat File'[Revenue]),'Cohort Flat File'[Aging] <=2,  'Cohort Flat File'[Aging] >0 , 'Cohort Flat File'[Customer Status] =1, 'Cohort Flat File'[Doc Date]='Cohort Flat File'[Ending Date])
 
Non-Start Revenue = CALCULATE(SUM('Cohort Flat File'[Revenue]), 'Cohort Flat File'[Customer Status]=0)
 
Upsell metric = IF([Variance]>0, [Variance], BLANK())

 

Downsell metric = IF([Variance]< 0, [Variance], BLANK())
 
Variance = [Total MRR]-[Previous Months MRR]
 
Churn = CALCULATE(SUM('Cohort Flat File'[Revenue]), 'Cohort Flat File'[End Date] = EOMONTH('Cohort Flat File'[Ending Date],-1))
 

The source file is excel and has the below layout :

 

Company NameRev TypeCustomer NumberCustomer NameRevenue CategoryCustomer StatusCustomer Status DescriptionChurn CodeStart DateEnd DateDoc DateRevenue
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20221/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20222/28/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20223/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20224/30/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20225/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20226/30/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20227/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20228/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20229/30/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/202210/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/202211/30/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/202212/31/20170
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20221/31/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20222/28/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20223/31/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20224/30/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20225/31/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20226/30/20180
Company 1Segment 1123456Clinic 1Credits5Billing Adjustment02/28/20222/28/20227/31/20180

 

downsouth22_3-1684936467863.png

 

1 ACCEPTED SOLUTION
downsouth22
Regular Visitor

Logic for Calculations

 

Total MRR- This would be starting MRR for each month

 

Added MRR- New customer MRR. Logis is that status is 1 & start date= Current month

 

Non-Start Adds- Customer Status = 0 

 

Ramp- Change in value (Current Month -Prior Month) for customers who have started in the last two months 

 

Churn- Customers who no longer have MRR. End date= Prior Month

 

 

 

View solution in original post

2 REPLIES 2
downsouth22
Regular Visitor

Logic for Calculations

 

Total MRR- This would be starting MRR for each month

 

Added MRR- New customer MRR. Logis is that status is 1 & start date= Current month

 

Non-Start Adds- Customer Status = 0 

 

Ramp- Change in value (Current Month -Prior Month) for customers who have started in the last two months 

 

Churn- Customers who no longer have MRR. End date= Prior Month

 

 

 

@downsouth22 , based on what I got

 

I think you should be able to add the variance logic in the measure I created lost, new customer, add an additional condition in retain have value -

refer Customer Retention with Dynamic Segmentation, New/Lost/Retain Customer Count: https://youtu.be/EyL7KMw877Q

 

Switch( True(),

Isblank([Previous Months MRR]) && not(isblank([Total MRR])) , "New",

 not(Isblank([Previous Months MRR])) && (isblank([Total MRR])) , "Lost",

IF([Variance]>0, "Upsell", "Downsell")

)

 

Have the bucket on 4 values and you can join and create new measures to coun, as shown in video 

Join us as experts from around the world come together to shape the future of data and AI!
At the Microsoft Analytics Community Conference, global leaders and influential voices are stepping up to share their knowledge and help you master the latest in Microsoft Fabric, Copilot, and Purview.
️ November 12th-14th, 2024
 Online Event
Register Here

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.