cancel
Showing results for
Did you mean:

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Helper V

## 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

Thanks !

1 ACCEPTED SOLUTION
Super User

Hi @Saniat ,

``````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

Proud to be a Super User!

4 REPLIES 4
Super User

Hi @Saniat  @JohnShepherdAPD ,

``````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

Proud to be a Super User!

Helper V

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

Super User

Hi @Saniat ,

``````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

Proud to be a Super User!

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/