Я предполагаю, что вы используете 5, поскольку сегодня 5 февраля.
Вы можете получить MTDSales
для текущего месяца, например так:
MTDSales =
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(TODAY(), - 1) + 1, TODAY() )
RETURN CALCULATE( SUM( Sales ), DateRange )
Чтобы соответствовать этомус предыдущим годом просто используйте SAMEPERIODLASTYEAR
.
LastYearMTDSales =
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(TODAY(), - 1) + 1, TODAY() )
RETURN CALCULATE( SUM( Sales ), SAMEPERIODLASTYEAR(DateRange) )
Если вы хотите использовать дату, отличную от TODAY
, просто укажите эту дату в качестве переменной и передайте ее в DateRange
переменная, где появляется TODAY
.
Если вы хотите найти MTDSales
до 5-го числа месяца (при условии, что у вас есть месяц в контексте фильтра), попробуйте это
MTDSales =
Var MyDay = 5
VAR MyDate = MIN( Calendar[Date] ) + MyDay - 1
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(MyDate, -1) + 1, MyDate )
RETURN CALCULATE( [Sum of Sales], DateRange )
Затем за предыдущий год вы можете повторно использовать эту меру, но сместились:
PrevYearMTDSales =
CALCULATE( [MTDSales], ALL( Calendar ), SAMEPERIODLASTYEAR( Calendar[Date] ) )
Редактировать: После просмотра вашей PBIX я понял,что я сделал неверное предположение о контексте вашего фильтра.Поскольку вы хотите написать показатель на уровне даты, попробуйте вместо этого:
Sales MTD CY =
VAR MyDay = 5
VAR CurrentDate = MAX ( 'Calendar'[Date] )
VAR MyDate = EOMONTH ( CurrentDate, -1 ) + MIN ( MyDay, DAY ( CurrentDate ) )
RETURN
CALCULATE (
TOTALMTD ( SUM ( Sales[Sales] ), 'Calendar'[Date] ),
FILTER ( 'Calendar', 'Calendar'[Date] <= MyDate )
)
Показатель предыдущего года все еще можно сделать, ссылаясь на этот показатель и сдвиг.