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
JL2007
Frequent Visitor

Rolling Average last 3, 6, 12 months

Hi!

 

I'm trying to do something I feel like should be simple, I'd like to find the rolling average of our bookings for the last 3, 6 and 12 months. I imagine it would be something along this but I don't know what date formula to use in order to look back the 3, 6, and 12 months. any help would be appreciated!

 

6M Bookings HR =
CALCULATE (
    SUM ( 'Bookings'[Contract Direct Labor] ), 'Table of Dates'[Month]) - 6Months/6
1 ACCEPTED SOLUTION

try this @JL2007 

 

measure =
CALCULATE(
    AVERAGEX(
        SUMMARIZE('Date', 'Date'[Year], 'DATE'[month number]),
        CALCULATE(SUM(Bookings[Contract Direct Labor]))
    ),
    DATESINPERIOD(
        'Date'[Date],
        MAX('Date'[Date]),
        -3,
        MONTH
    )
)
― Power BI | Microsoft Fabric | PL-300 | DP-600 | Blog: medium.com/@cseprs_54978

View solution in original post

5 REPLIES 5
danextian
Super User
Super User

Hi @JL2007 

 

SQLBI actually has a very good explanation on how to achieve this using DATESINPERIOD and AVERAGEX.

https://www.sqlbi.com/articles/rolling-12-months-average-in-dax/ 





Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.
Ashish_Mathur
Super User
Super User

Hi,

Assuming Bookings is a measure that you have already written, write this measure

Rolling 3 months average booking = averagex(Summarize(calculatetable(calendar,datesbetween(calendar[date],edate(min(calendar[date]),-2),max(calendar[date]))),calendar[year],calendar[month name],"A",[bookings]),[A])

To your visual, ensure that you drag Year and Month name from the Calendar table.

Hope this helps.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
techies
Super User
Super User

Hi @JL2007 please try this

 

3M_Bookings_HR =
CALCULATE(
AVERAGEX(
VALUES('Date'[Month Number]),
SUM(Bookings[Contract Direct Labor])
),
DATESINPERIOD(
'Date'[Date],
MAX('Date'[Date]),
-3,
MONTH
)
)

― Power BI | Microsoft Fabric | PL-300 | DP-600 | Blog: medium.com/@cseprs_54978

Thanks, it's giving me the total for the last 3 months, and not the average, I'd expect it to be $7,079,700 as the average not $21,239,101 for February

 

JL2007_0-1742596396795.png

 

try this @JL2007 

 

measure =
CALCULATE(
    AVERAGEX(
        SUMMARIZE('Date', 'Date'[Year], 'DATE'[month number]),
        CALCULATE(SUM(Bookings[Contract Direct Labor]))
    ),
    DATESINPERIOD(
        'Date'[Date],
        MAX('Date'[Date]),
        -3,
        MONTH
    )
)
― Power BI | Microsoft Fabric | PL-300 | DP-600 | Blog: medium.com/@cseprs_54978

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

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