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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Theo_
New Member

years between dates + categories using measures only

Hi There,

 

I have been searching the forum but I can't find any posts that tackle my specific issue. I am building reports for a renting company and I and can only make measures, not calculated colums or new tables. 

 

I have the following two dimensions connected through Customer_ID:

Customer_IDBirthDate
11-1-2006
23-6-1970
324-5-1998
44-9-2008
512-2-2023

 and 

Order_IDCustomer_IDRent_StartDateRent_EndDate
117-4-202321-6-2023
2212-4-202322-6-2023
331-5-2023 
448-5-2023 
5523-5-2023 

What I am trying to do is two things: 1) calculate the customer's age in years at the start of the renting period and 2) organise these years in age-categories. With only measures. 

 

Just for context: I am already reporting the total orders (per month, based on Rent_StartDate) and I want to add the average age at the start of the rent, and the specific age groups at the start of the rent. 

So something like this:

 AprilMay
# Orders23
avgAgeCustomer  
# Customers 16-20  
# Customers 21-25  
# Customers 26-30  
# Customers >30  

 

Anyone here have an idea on how to tackle this issue?

 

Thanks!!

1 ACCEPTED SOLUTION
Sahir_Maharaj
Super User
Super User

Hello @Theo_,

 

Can you please try this:

 

1. Measure to calculate the customer's age at the start of the renting period.

Customer Age =
DATEDIFF(
    MAX('Rent'[Rent_StartDate]),
    LOOKUPVALUE('Customer'[BirthDate], 'Customer'[Customer_ID], MAX('Rent'[Customer_ID])),
    YEAR
)

2. Measure to categorize the ages into different age groups.

Age Category =
SWITCH(
    TRUE(),
    [Customer Age] >= 16 && [Customer Age] <= 20, "# Customers 16-20",
    [Customer Age] >= 21 && [Customer Age] <= 25, "# Customers 21-25",
    [Customer Age] >= 26 && [Customer Age] <= 30, "# Customers 26-30",
    [Customer Age] > 30, "# Customers >30",
    BLANK()
)

3. Total orders, average age, and count of customers per age category.

# Orders = COUNTROWS('Orders')
avgAgeCustomer = AVERAGE('Rent'[Customer Age])
# Customers 16-20 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 16-20")
# Customers 21-25 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 21-25")
# Customers 26-30 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 26-30")
# Customers >30 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers >30")

 

Do not hesitate to let me know if you might need further assistance.


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

View solution in original post

2 REPLIES 2
Sahir_Maharaj
Super User
Super User

Hello @Theo_,

 

Can you please try this:

 

1. Measure to calculate the customer's age at the start of the renting period.

Customer Age =
DATEDIFF(
    MAX('Rent'[Rent_StartDate]),
    LOOKUPVALUE('Customer'[BirthDate], 'Customer'[Customer_ID], MAX('Rent'[Customer_ID])),
    YEAR
)

2. Measure to categorize the ages into different age groups.

Age Category =
SWITCH(
    TRUE(),
    [Customer Age] >= 16 && [Customer Age] <= 20, "# Customers 16-20",
    [Customer Age] >= 21 && [Customer Age] <= 25, "# Customers 21-25",
    [Customer Age] >= 26 && [Customer Age] <= 30, "# Customers 26-30",
    [Customer Age] > 30, "# Customers >30",
    BLANK()
)

3. Total orders, average age, and count of customers per age category.

# Orders = COUNTROWS('Orders')
avgAgeCustomer = AVERAGE('Rent'[Customer Age])
# Customers 16-20 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 16-20")
# Customers 21-25 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 21-25")
# Customers 26-30 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers 26-30")
# Customers >30 = CALCULATE(COUNTROWS('Rent'), [Age Category] = "# Customers >30")

 

Do not hesitate to let me know if you might need further assistance.


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

It works, thanks!!

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

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