Таким образом, проблема заключается в том, что MAX(fact_Losses[DevMonth])
является нулевым для этих отсутствующих ячеек, потому что нет соответствующих транзакций.
Вы можете исправить мой фильтр удаления контекста, навязанный dim_Date
.
Accident Month Losses =
VAR CurrDevMonth =
CALCULATE ( MAX ( fact_Losses[DevMonth] ), ALL ( dim_Date ) )
VAR RunningLoss =
CALCULATE (
[Total Loss],
FILTER ( ALL ( fact_Losses[DevMonth] ), fact_Losses[DevMonth] <= CurrDevMonth )
)
RETURN
RunningLoss
Все, что я сделал до сих пор, это поместил MAX
в CALCULATE
, чтобы я мог удалить контекст фильтра dim_Date
и поместить вещи в переменные, чтобы легче понять, что происходит.
Проблема теперь в том, что вся таблица заполнена, а не является верхней треугольной.Чтобы исправить это, мы можем сказать, чтобы он возвращал пробел, если текущий месяц, перенесенный на DevMonth
количество месяцев, больше максимального месяца.
Accident Month Losses =
VAR CurrDevMonth =
CALCULATE ( MAX ( fact_Losses[DevMonth] ), ALL ( dim_Date ) )
VAR RunningLoss =
CALCULATE (
[Total Loss],
FILTER ( ALL ( fact_Losses[DevMonth] ), fact_Losses[DevMonth] <= CurrDevMonth )
)
VAR MaxYearMonth =
CALCULATE (
EOMONTH ( MAX ( fact_Losses[AccidentDate] ), 0 ),
ALLSELECTED ( fact_Losses )
)
VAR CurrYearMonth = MAX ( dim_Date[Date] )
RETURN
IF (
EOMONTH ( CurrYearMonth, CurrDevMonth - 1 ) > MaxYearMonth,
BLANK (),
RunningLoss
)
Это также удалит некоторые промежуточные итоги,но вы можете получить их обратно, если добавите пару условий к своему условному условию IF
.
IF (
EOMONTH ( CurrYearMonth, CurrDevMonth - 1 ) > MaxYearMonth
&& ISFILTERED( dim_Date[Year Month] )
&& ISFILTERED( fact_Losses[DevMonth] ),
BLANK (),
RunningLoss
)