Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowData Days is here! Join us now for 60+ days of learning, challenges, and connection. Learn more
Hello DAX Gods,
I have this table in one of my PowerBI reports that shows YoY % Revenue growth. For the most part, this looks right with the execption of the current year because we are only in September. How can I show the YoY % to only calculate vs YTD of previous year?
I'm using the following DAX formula for the Rev YoY Growth %:
Rev YoY Growth % =
VAR _currentyear_rev = [Total Revenue]
VAR _currentyear = MAX('400_Revenue'[Year])
VAR _previouseyear_rev = CALCULATE([Total Revenue],'400_Revenue'[Year] = _currentyear - 1)
VAR _YoYGrowth =
DIVIDE(
_currentyear_rev - _previouseyear_rev, _previouseyear_rev
)
RETURN
IF(
HASONEVALUE('400_Revenue'[Year]),
IF(
NOT ISBLANK(_currentyear_rev) && NOT ISBLANK(_previouseyear_rev),
_YoYGrowth
)
)
Solved! Go to Solution.
Hi @egrospe17
Based on your needs, I have created the following table.
First you can use the following Measure to get the total revenue every year.
Total Revenue =
VAR _year = [Year]
RETURN
SUMX(FILTER(ALL('Table'),'Table'[Year]=_year),'Table'[Revenue])
Then you can use the following Measure to get the result you want:
YoY % Revenue growth =
VAR _year = [Year]
VAR _sameperiodtotal = CALCULATE ( [Total Revenue], DATESYTD ( SAMEPERIODLASTYEAR ( 'Table'[Date] ) ) )
VAR _maxmonth = MAXX (
FILTER ( ALL ( 'Table' ), 'Table'[Year] = _year ),
MONTH ( 'Table'[Date] )
)
RETURN
IF (
_maxmonth< 12,
DIVIDE (
SUMX ( FILTER ( ALL ( 'Table' ), 'Table'[Year] = _year ), 'Table'[Revenue] ),
SUMX (
FILTER (
ALL ( 'Table' ),
'Table'[Year] = _year - 1
&& MONTH ( 'Table'[Date] )
<= _maxmonth
),
'Table'[Revenue]
)
)-1,
DIVIDE (
[Total Revenue]-_sameperiodtotal,
_sameperiodtotal
)
)
Best Regards,
Jayleny
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @egrospe17
Based on your needs, I have created the following table.
First you can use the following Measure to get the total revenue every year.
Total Revenue =
VAR _year = [Year]
RETURN
SUMX(FILTER(ALL('Table'),'Table'[Year]=_year),'Table'[Revenue])
Then you can use the following Measure to get the result you want:
YoY % Revenue growth =
VAR _year = [Year]
VAR _sameperiodtotal = CALCULATE ( [Total Revenue], DATESYTD ( SAMEPERIODLASTYEAR ( 'Table'[Date] ) ) )
VAR _maxmonth = MAXX (
FILTER ( ALL ( 'Table' ), 'Table'[Year] = _year ),
MONTH ( 'Table'[Date] )
)
RETURN
IF (
_maxmonth< 12,
DIVIDE (
SUMX ( FILTER ( ALL ( 'Table' ), 'Table'[Year] = _year ), 'Table'[Revenue] ),
SUMX (
FILTER (
ALL ( 'Table' ),
'Table'[Year] = _year - 1
&& MONTH ( 'Table'[Date] )
<= _maxmonth
),
'Table'[Revenue]
)
)-1,
DIVIDE (
[Total Revenue]-_sameperiodtotal,
_sameperiodtotal
)
)
Best Regards,
Jayleny
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
VAR _previouseyear_rev = CALCULATE([Total Revenue],'400_Revenue'[Year] = _currentyear - 1)
Did you try using SAMEPERIODLASTYEAR ?
Hi SachinNandanwar,
How would I incorporate SAMEPERIODLASTYEAR to my existing formula?
I tried following this thread but it didn't produced the result I needed. the YoY% just returned as null when I put it on a table.
Hi @egrospe17 : So basically you need to compare Jan-Sep 2023 with Jan-Sep 2024 for calculating YoY%, right ?
For that you can use a combination of DATESYTD and SAMEPERIODLASTYEAR.
Something like
CALCULATE([Total Revenue], DATESYTD(SAMEPERIODLASTYEAR('400_Revenue'[Date])))
Don't miss out on Data Days, June 15 through August 7. Learn Fabric, Power BI, SQL, AI and more.
Check out the May 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 |