Forum Discussion
Dynamic rolling charts
- 9 years ago
Hi tylerdv,
I assume you have a table with a flag of weeks you want roll back like 'FlagTable'[Flag].
Then the formula to create the measure should like below.:smileyhappy:
Rolling n Week Sales = VAR currentWeek = MAX ( 'CalendarTable'[WeekNumber] ) VAR currentYear = MAX ( 'CalendarTable'[Year] ) VAR selectedFlag = MAX ( 'FlagTable'[Flag] ) RETURN IF ( currentWeek - selectedFlag < 1, CALCULATE ( [Total Sales], FILTER ( ALL ( CalendarTable ), 'CalendarTable'[Year] = currentYear - 1 && 'CalendarTable'[WeekNumber] = 52 + currentWeek - selectedFlag ) ), CALCULATE ( [Total Sales], FILTER ( ALL ( CalendarTable ), 'CalendarTable'[Year] = currentYear && 'CalendarTable'[WeekNumber] = currentWeek - selectedFlag ) ) )Regard
Hi tylerdv,
I assume that you already have the Year and WeekNumber columns in your Calendar table. If not, you can use the formula below to add them first.
Year = YEAR ( 'CalendarTable'[Date] ) WeekNumber = WEEKNUM ( 'CalendarTable'[Date] )
Then you should be able to use the formula below to create a measure to calculate -6 weeks of sales, and show the measure on the chart with your Date column on the report.:smileyhappy:
Rolling 6 Week Sales =
VAR currentWeek =
MAX ( 'CalendarTable'[WeekNumber] )
VAR currentYear =
MAX ( 'CalendarTable'[Year] )
RETURN
IF (
currentWeek - 6
< 1,
CALCULATE (
[Total Sales],
FILTER (
ALL ( CalendarTable ),
'CalendarTable'[Year]
= currentYear - 1
&& 'CalendarTable'[WeekNumber]
= 52 + currentWeek
- 6
)
),
CALCULATE (
[Total Sales],
FILTER (
ALL ( CalendarTable ),
'CalendarTable'[Year] = currentYear
&& 'CalendarTable'[WeekNumber]
= currentWeek - 6
)
)
)
Regards
- tylerdv9 years agoFrequent Visitor
Hi v-ljerr-msft thanks for your response!
How would the bellow code work for it to create a flag that i can then filter on for a visual?
Thanks for you help
Thanks
T
- v-ljerr-msft9 years ago
Microsoft Employee
Hi tylerdv,
I assume you have a table with a flag of weeks you want roll back like 'FlagTable'[Flag].
Then the formula to create the measure should like below.:smileyhappy:
Rolling n Week Sales = VAR currentWeek = MAX ( 'CalendarTable'[WeekNumber] ) VAR currentYear = MAX ( 'CalendarTable'[Year] ) VAR selectedFlag = MAX ( 'FlagTable'[Flag] ) RETURN IF ( currentWeek - selectedFlag < 1, CALCULATE ( [Total Sales], FILTER ( ALL ( CalendarTable ), 'CalendarTable'[Year] = currentYear - 1 && 'CalendarTable'[WeekNumber] = 52 + currentWeek - selectedFlag ) ), CALCULATE ( [Total Sales], FILTER ( ALL ( CalendarTable ), 'CalendarTable'[Year] = currentYear && 'CalendarTable'[WeekNumber] = currentWeek - selectedFlag ) ) )Regard