Forum Discussion
YTD For All Years
- 4 years ago
Hi rioshox
The key to solving the problem is to get the respective period of each year according to the month selected by the slicer. Firstly, you need to have an independent date table, use it as slicer.
(1) create the Date table
(2) create the measure bellow,
Measure = var _selectedMonth = MONTH(SELECTEDVALUE('Date'[Date])) var _currentMonth = DATE(YEAR(MIN('Table'[Date])),_selectedMonth,1) var _dateStart = EDATE(_currentMonth,-12) return CALCULATE(SUM('Table'[value]),FILTER(ALL('Table'),'Table'[Date] >= _dateStart && 'Table'[Date] <= _currentMonth))as you can see above, if you select 2022-Jan, then _currentMonth = 2022 - Jan, _dateStart = 2021 - Jan, then Measure returns total of this period.
But if you want to get same period in last years, try this
Measure2 = var _selectedMonth = MONTH(SELECTEDVALUE('Date'[Date])) return CALCULATE(SUM('Table'[value]),FILTER(ALL('Table'),MONTH('Table'[Date])= _selectedMonth && YEAR('Table'[Date])= year(MIN('Table'[Date]))))Besides, if you want to add total to this visual, try this
Measure2-1 = var _selectedMonth = MONTH(SELECTEDVALUE('Date'[Date])) return CALCULATE(SUM('Table'[value]),FILTER(ALL('Table'),MONTH('Table'[Date])= _selectedMonth && YEAR('Table'[Date])= year(MIN('Table'[Date]))))Measure2-2 = var _selectedMonth = MONTH(SELECTEDVALUE('Date'[Date])) return SUMX(FILTER(ALL('Table'),MONTH('Table'[Date])= _selectedMonth),[Measure2-1])Measure2 = IF(ISINSCOPE('Table'[Date].[Year]),[Measure2-1],[Measure2-2])Best Regards,
Community Support Team _Tang
If this post helps, please consider Accept it as the solution to help the other members find it more quickly.
If you want to use year slicer this might be for you other wise you need to calculte ytd for all years
first you need to calculate year start date
year start date = STARTOFYEAR(DateTime[DateKey])then you need to create year rank using this logic:
year rank = RANKX(all('calender table'),'calender table'[year start date],,ASC,Dense)then use this logic to calculate ytd:
Ytd =
CALCULATE(SUM('sales table'[sales]),FILTER(all(calender table),calender table[year rank]=max(calender table[year rank])-1))