Скользящий итог PowerPivot в столбце

Меня попросили изучить время реагирования и разрешения инцидентов. К сожалению, инструмент, который у нас есть, бесполезен в этой области. Ниже приведена выдержка данных для 2 билетов:

Incident_Id | Status           |Begin_Time        |End_Time          | RowTotal
------------|------------------|------------------|------------------|--------
IM3415346   | Open             | 10/03/2017 11:20 | 10/03/2017 11:33 | 787
IM3415346   | Work In Progress | 10/03/2017 11:33 | 10/03/2017 11:55 | 1325
IM3415346   | Work In Progress | 10/03/2017 11:55 | 10/03/2017 13:20 | 5099
IM3415346   | Work In Progress | 10/03/2017 13:20 | 10/03/2017 13:56 | 2133
IM3415346   | Closed           | 10/03/2017 13:56 | 10/03/2017 13:56 | 0
IM3415483   | Open         | 10/03/2017 12:30 | 10/03/2017 12:39 | 530
IM3415483   | Work In Progress | 10/03/2017 12:39 | 10/03/2017 12:53 | 848
IM3415483   | Work In Progress | 10/03/2017 12:53 | 10/03/2017 14:10 | 4579
IM3415483   | Work In Progress | 10/03/2017 14:10 | 10/03/2017 14:30 | 1199
IM3415483   | Work In Progress | 10/03/2017 14:30 | 10/03/2017 16:55 | 8700
IM3415483   | Closed           | 10/03/2017 16:55 | 10/03/2017 16:55 | 0

Инструмент только говорит, что заявка не соответствует SLA, и это приписывается команде, закрывающей заявку, даже если они не несут ответственности за задержку.

В идеале я пытаюсь получить столбец промежуточных сумм для каждого инцидента рядом с RowTotal:

RowTotal | RunningTotal |
---------|--------------|
787      | 786          |
1325     | 2111         |
5099     | 7210         |
2133     | 9343         |
0        | 9343         |
530      | 530          |
848      | 1377         |
4579     | 5956         |
1199     | 7155         |
8700     | 15855        |
0        | 15855        |

Я видел, как сделать кумулятивный итог, суммируя все времена для каждого инцидента по очереди...

=CALCULATE(SUM(Query[TotalSeconds]),Query[Incident_Id]=EARLIER(Query[Incident_Id]),Query[TotalSeconds]>0)

Но я действительно борюсь с этим текущим общим подходом. Есть ли кто-нибудь, кто мог сталкиваться с этим раньше?


person Jonbuoy    schedule 23.03.2017    source источник


Ответы (1)


Я не смог увидеть TotalSeconds в предоставленных данных, поэтому я просто буду использовать вместо него RowTotal для иллюстрации. Не стесняйтесь изменять его, чтобы он соответствовал вашему конкретному варианту использования.

RunningTotal = 
CALCULATE(
    SUM(Query[RowTotal]),
    FILTER(
        Query,
        Query[Incident_Id] = EARLIER(Query[Incident_Id]) &&
        Query[Begin_Time] <= EARLIER(Query[Begin_Time])
    )
)

Вам не хватает функции FILTER для правильной работы контекста строки. Вам также необходимо добавить фильтр к Begin_Time, чтобы он суммировал только предыдущее зарегистрированное время, но не все строки в инциденте.

В зависимости от бизнес-логики вам может понадобиться добавить фильтры на Status или также End_Time, но это выходит за рамки обсуждения.

Результат:

результат

person Foxan Ng    schedule 25.03.2017