Forum Discussion
rolling average without time intelligence
I have a measure ([Total Sales]) that I want to compute a 6-week rolling average on. The "date" grain of my data model is week. So, I am unable to use the quick measure feature to auto-generate a rolling average. My week labeling is unusual (e.g., "FY 1 W1"); this is stored in column [Week Label]. So, I have created a [Week Number] column to get the proper ordering. My newest [Week Number] is 52; my oldest [Week Number] is 1. I have tried the following in a visual with axis [Week Label], but it's returning the [Total Sales] for each week, not the 6-week rolling average. How can I resolve this?
Rolling 6 Weeks Average of Total Sales =
//get the given week
VAR __given_week =
SELECTEDVALUE('Dimension Week'[Week Number])
//calculate total sales for each week
VAR __table =
ADDCOLUMNS(
SUMMARIZE(
'Dimension Week'
,'Dimension Week'[Week Number]
)
,"Total Sales Value"
,[Total Sales]
)
RETURN
AVERAGEX(
FILTER(
__table
,[Week Number] <= __given_week
&& [Week Number] > __given_week - 6
)
,[Total Sales]
)
- Anonymous5 years ago
I solved my problem with the following:
Rolling 6 Weeks Average of Total Sales = //get the given week VAR __given_week = SELECTEDVALUE('Dimension Week'[Week Number]) //number of weeks in rolling average VAR __duration = 6 //create a table of weekly ranges per week VAR __calculation_range = FILTER( ALL('Dimension Week') ,[Week Number] <= __given_week && [Week Number] > __given_week - __duration ) RETURN IF( COUNTROWS(__calculation_range) = __duration //only return the result when there are the desired number of weeks in the range (e.g., week 5 doesn't have 6 weeks in it) ,CALCULATE( AVERAGEX( 'Dimension Week' ,[Total Sales] ) ,__calculation_range ) ,BLANK() )
2 Replies
- AnonymousNot applicable
I solved my problem with the following:
Rolling 6 Weeks Average of Total Sales = //get the given week VAR __given_week = SELECTEDVALUE('Dimension Week'[Week Number]) //number of weeks in rolling average VAR __duration = 6 //create a table of weekly ranges per week VAR __calculation_range = FILTER( ALL('Dimension Week') ,[Week Number] <= __given_week && [Week Number] > __given_week - __duration ) RETURN IF( COUNTROWS(__calculation_range) = __duration //only return the result when there are the desired number of weeks in the range (e.g., week 5 doesn't have 6 weeks in it) ,CALCULATE( AVERAGEX( 'Dimension Week' ,[Total Sales] ) ,__calculation_range ) ,BLANK() ) - v-robertq-msftCommunity Support
Hi, Anonymous
Glad to hear that you have solved your problem by yourself and thank you for the experience sharing.😊
Would you like to mark your own reply as a solution so that others can learn from it too?
Thanks in advance!
How to Get Your Question Answered Quickly
Best Regards,
Community Support Team _Robert Qin
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.