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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
hbolo
Regular Visitor

YoY YTD Revenue Trends -- Should not Include Entire Month

I am analyzing Year-over-Year, Year-to-Date revenue trends and I'm having some troubles coming up with the right formula for the Prior Year Amounts. For example, it's now January 2, so I want to compare Jan 1-2 2018 revenue with Jan 1-2 2019 revenue.

 

When I have used SAMEPERIODLASTYEAR the formula returns the entire Jan 2018 amount instead of just the first and second days of the month. I have tried a couple more complex equations that I found on the forums that involved naming variables and if statements, but I ran into the same issue with each permutation I tried. Is there a solution for this?

 

Formula: 

2018 YTD Revenue = CALCULATE(Revenue[2018 Revenue],SAMEPERIODLASTYEAR('Date Table'[Date]))

 

Worksheet Setup: 

  • Two tables -- one is a date table ("Date Table") and one has revenue info ("Revenue")
  • Revenue Amounts span from Jan 1, 2018 - Jan 16, 2019

Dropbox link to Download: Link

 

Thanks in advance for your help! Please let me know if you need any more info...

1 ACCEPTED SOLUTION

@hbolo

 

If you place the dates (up to the day level) in the rows of the matrix, just like you had in your pbix, it should work. The measures will return the YTD up to the day in the current row.

View solution in original post

10 REPLIES 10
AlB
Super User
Super User

Hi @hbolo

How about you try these two measures in the matrix visual you already have? 

 

YTDRevenue = 
CALCULATE(
SUM(Revenue[Revenue]);
DATESYTD('Date Table'[Date])
)
PreviousYearYTDRevenue =
CALCULATE (
    SUM ( Revenue[Revenue] );
    DATESYTD ( SAMEPERIODLASTYEAR ( 'Date Table'[Date] ) )
)
 
hbolo
Regular Visitor

This PreviousYearYTDRevenue formula here returns the entire January 2018 amount for me -- I only want the first days of January. Were you able to get it to work?

@hbolo

 

If you place the dates (up to the day level) in the rows of the matrix, just like you had in your pbix, it should work. The measures will return the YTD up to the day in the current row.

hbolo
Regular Visitor

@AlBThat worked! 

 

Does that date field always need to be on the rows/columns for the measure to behave in this way? For example, is there a way for me to use this measure on the Card or Gauge visualization without showing the entire PY month's revenue amounts?

@hbolo

 

The measures will take the latest date in filter context as base. If filter context is absent, they will take the latest date in the Date table. You can set them in a Card with a slicer to determine what date you want in the filter context.

hbolo
Regular Visitor

@AlB

 

Thanks! Any tips to do this slicer in an automated fashion?

@hbolo

What do you mean exactly?

hbolo
Regular Visitor

@AlB

 

Effectively make the slicer automatically update based on today's date. For example, as time progresses the slicer forward like the TODAY() function would. For a YoY comparison it'd be extremely helpful if there was some way to do TODAY() - 1 year.

 

Does that make sense?

You can find several examples in this article: https://www.sqlbi.com/articles/compare-equivalent-periods-in-dax/

Hi @hbolo

 

FYI, I posted this regarding an issue I came across when answering your question. Have a look. It is dangerous to have an "incomplete" Date table (i.e., without all the dates in the years covered) if you're going to be using date intelligence functions     

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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