Forum Discussion
Rolling average Last Month and Current Month
Hi,
I have two tables:
BLUE: Table used for Date slider/slicer
RED: Table used for all other dimensions/measures
I am plotting 'sum of flag' in a timeline.
I wish to plot rolling average of 'this month and last month' in the timeline.
That means for January: 5 is okay.
For February: it should be (5+4) / 2 = 4.5
For March: (4+3)/2 = 3.5
Can someone please help me with that.
Thanks !
Hi Anonymous ,
Sorry about that, try this:myMeasure = VAR _monthNumberCurrent = MAX ( mytable[monthNumber] ) //get the month number from this row var _thisMonthFlag = MAX(myTable[Flag]) VAR _prevMonthNumber = CALCULATE ( MAX ( mytable[monthNumber] ), FILTER ( ALL ( myTable ), myTable[monthNumber] < _monthNumberCurrent ) ) //filter the table to all month numbers less than this month number, and get the max value which is the month before var _lastMonthFlag = CALCULATE(MAX(myTable[Flag]),FILTER(ALL(myTable),myTable[MonthNumber]=_prevMonthNumber)) RETURN DIVIDE ( _thisMonthFlag + _lastMonthFlag, IF(_lastMonthFlag = 0,1,2 ))
Let me know if you have any questions.
If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πare nice too.
Nathaniel
4 Replies
- Nathaniel_C
Community Champion
Hi Anonymous JohnShepherdAPD ,
If I understand your issue correctly, please try this measure:myMeasure = VAR _monthNumberCurrent = MAX ( mytable[monthNumber] ) //get the month number from this row VAR _prevMonthNumber = CALCULATE ( MAX ( mytable[monthNumber] ), FILTER ( ALL ( myTable ), myTable[monthNumber] < _monthNumberCurrent ) ) //filter the table to all month numbers less than this month number, and get the max value which is the month before RETURN DIVIDE ( _monthNumberCurrent + _prevMonthNumber, 2 )
Let me know if you have any questions.
If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πare nice too.
Nathaniel- AnonymousNot applicable
Hi Nathaniel_C ,
Thanks for this.
I am actually looking for average of [Flag] on those months ...
In the timeline on the right bottom corner ...
For February: it should be (5+4) / 2 = 4.5
For March: (4+3)/2 = 3.5
The final measure will be 2 months rolling average ...
Many thanks- Nathaniel_C
Community Champion
Hi Anonymous ,
Sorry about that, try this:myMeasure = VAR _monthNumberCurrent = MAX ( mytable[monthNumber] ) //get the month number from this row var _thisMonthFlag = MAX(myTable[Flag]) VAR _prevMonthNumber = CALCULATE ( MAX ( mytable[monthNumber] ), FILTER ( ALL ( myTable ), myTable[monthNumber] < _monthNumberCurrent ) ) //filter the table to all month numbers less than this month number, and get the max value which is the month before var _lastMonthFlag = CALCULATE(MAX(myTable[Flag]),FILTER(ALL(myTable),myTable[MonthNumber]=_prevMonthNumber)) RETURN DIVIDE ( _thisMonthFlag + _lastMonthFlag, IF(_lastMonthFlag = 0,1,2 ))
Let me know if you have any questions.
If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πare nice too.
Nathaniel
- JohnShepherdAPD
Helper II
Hi Saniat, take a look at the window function, some explanation is here:
https://www.sqlbi.com/articles/introducing-window-functions-in-dax/