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

Score big with last-minute savings on the final tickets to FabCon Vienna. Secure your discount

Reply
Anonymous
Not applicable

Amortize values for a period

 

I have two tables. One with contract details and one with cancellation date and it is a one to many bidirectional relationship.

Table A

 

Customer

Start date

End date

Contract amount

A

01/02/2022

01/02/2023

100

A

01/02/2022

01/02/2023

50

B

01/02/2012

01/02/2023

50

 

Table B

Customer

Cancel Date

A

01/03/2023

B

01/03/2023

 

I have a measure called Annual Contract Value (ACV) that sums total value of all contracts lies in current contract period. So, for example, ACV for customer A is £150.

 I want to create a measure called revenue impact that amortize ACV for subsequent annual period. For example, Monthly revenue impact of customer A is £12.50. So, the revenue impact measure for customer A should display £12.50 from 01/02/2023 to 01/02/2024.

I will have a specific date selected through a date slicer on cancel date.

The ACV measure is working correctly, but the revenue is not outputting the same values as ACV and would appreciate any help.

 

ACV = calculate (sum (Table A [ Contract amount) , Table A [ Start Date] <= max(Table B [Cancel Date]) && Table A [End Date] > max(Table B [End Date]))

 

Revenue Impact =

var Range_Start = MIN(Table B [Cancel Date])

var Range_End = IF (MIN(Table B[ Cancel Date]) > min(Table A [End_Date]), EDATE(MIN(Table B[Cancel Date]),11), min(Table A [End_Date]))

var current_date = SELECTEDVALUE(Table B[Cancel Date])

VAR Monthly_ACV_Revenue = DIVIDE(Subscription_ACV , 12)

return

IF(current_date >= Range_Start && current_date <= Range_End , Monthly_ACV_Revenue)

 

 

1 REPLY 1
Sahir_Maharaj
Super User
Super User

Hello @Anonymous,

 

Can you please try this:

Revenue Impact =
VAR Range_Start = MIN('Table B'[Cancel Date])
VAR Range_End = IF(MIN('Table B'[Cancel Date]) > MIN('Table A'[End date]), EDATE(MIN('Table B'[Cancel Date]), 12), MIN('Table A'[End date]))
VAR Monthly_ACV_Revenue = DIVIDE([ACV], 12)
VAR Current_Date = SELECTEDVALUE('Table B'[Cancel Date])
RETURN
    IF(Current_Date >= Range_Start && Current_Date <= Range_End, Monthly_ACV_Revenue, BLANK())

Did I answer your question? Mark my post as a solution, this will help others!

If my response(s) assisted you in any way, don't forget to drop me a "Kudos" 🙂

Kind Regards,
Sahir Maharaj
Data Scientist | Data Engineer | Data Analyst | AI Engineer
P.S. Want me to build your Power BI solution? (Yes, its FREE!)
➤ Lets connect on LinkedIn: Join my network of 15K+ professionals
➤ Join my free newsletter: Data Driven: From 0 to 100
➤ Website: https://sahirmaharaj.com
➤ Email: sahir@sahirmaharaj.com
➤ Want me to build your Power BI solution? Lets chat about how I can assist!
➤ Join my Medium community of 30K readers! Sharing my knowledge about data science and artificial intelligence
➤ Explore my latest project (350K+ views): Wordlit.net
➤ 100+ FREE Power BI Themes: Download Now
LinkedIn Top Voice in Artificial Intelligence, Data Science and Machine Learning

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.