DAX: сброс совокупного итога на определенные пороговые значения даты

#powerbi #dax

#powerbi #dax

Вопрос:

У меня есть совокупный итог CE CE's cumulative (см. Ниже).

Мне нужно, чтобы совокупный итог сбрасывался до 0 после нажатия ResetDate

Просмотрел все форумы, но не смог найти ответ, надеюсь, вы сможете мне помочь.

 CE's cumulative =
CALCULATE(
   SUM (CE's),
     FILTER( ALL( DimDate),
     DimDate[Date] <= MAX( DimDate[Date] )
           )
         )

  
 Date    CE's cumulative ResetDate
10-10-2019  77.670.099  
11-10-2019  78.057.691  11-10-2019
12-10-2019  78.114.554  
13-10-2019  78.234.181  
14-10-2019  78.469.789  
15-10-2019  78.709.015  15-10-2019
16-10-2019  80.070.020  
  

Ответ №1:

Вы можете использовать эту приведенную ниже меру-

 cumulative_sum = 

VAR current_date = MIN(your_table_name[Date])

VAR last_reset_date = 
CALCULATE(
    MAX(your_table_name[ResetDate]),
    FILTER(
        ALL(your_table_name),
        your_table_name[Date] <= current_date
    )
)

RETURN 
IF(
    last_reset_date = BLANK(), 
    CALCULATE(
        SUM(your_table_name[CE's cumulative]),
        FILTER(
            ALL(your_table_name),
            your_table_name[Date] <= current_date
        )
    ),
    CALCULATE(
        SUM(your_table_name[CE's cumulative]),
        FILTER(
            ALL(your_table_name),
            your_table_name[Date] <= current_date
            amp;amp; your_table_name[Date] >= last_reset_date
        )
    )
)
  

Вот результат-

введите описание изображения здесь

Комментарии:

1. Приятно видеть, что это помогло 🙂

Ответ №2:

Я бы нашел ближайшую дату сброса к моей дате, а затем использовал ее в фильтре:

 VAR currentDate = SELECTEDVALUE(dimDate[date])
VAR lastResetDate = LASTDATE(FILTER(ALL(dimDate[ResetDate], dimDate[ResetDate] < currentDate)))

RETURN CALCULATE(SUM(CE's), 
                ALL(dimDate), 
                dimDate[date] > lastResetDate amp;amp; dimDate[date] <= currentDate)