Как получить разницу в днях (по строкам) в power bi для каждого идентификатора для каждой версии - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно рассчитать разницу между днями (по строкам) для каждого идентификатора, каждой итерации, где первая запись каждого идентификатора и каждой версии равна 0. Я попробовал несколько фрагментов кода, но не сработал, например:

Calculated Time = 
VAR Index = Table[Version]
VAR Reference = Table[Id]
VAR Prevtime =
    CALCULATE (
        FIRSTNONBLANK ( Table[Date], TRUE () ),
        FILTER (Table, Table[Id] = Reference  && Table[Version]  = Index)
    )
RETURN
Table[Date] - Prevtime

Желаемый результат:

ID  Version Date              Calculated time      Formula
12345   1   11/1/2018 8:08      0                   0
12345   1   11/16/2018 8:39     15.02152778         =C3-C2
12345   1   11/16/2018 13:29    0.201388889         =C4-C3
12345   1   11/16/2018 13:32    0.002083333 
12345   2   11/16/2018 8:39     0   
12345   2   11/26/2018 14:24    10.23958333 
12345   2   11/26/2018 14:24    0   
12345   3   11/16/2018 8:39     0   
12345   3   12/6/2018 12:13     20.14861111 
12345   3   12/6/2018 12:20     0.004861111

Любые входные данные приветствуются.Пожалуйста, дайте мне знать, если мне нужно внести некоторые изменения в приведенный выше код или вы можете помочь мне

1 Ответ

0 голосов
/ 06 июля 2019

Я думаю, вы ищете что-то вроде этого:

enter image description here

Работает так:
ALLEXCEPT ( 'Table', 'Table'[ID], 'Table'[Version] ) возвращает таблицу «Таблица», отфильтрованную по [ID] и [Version] текущей строки. Затем функция CALCULATE вычисляет наибольшее значение [Date] из этой отфильтрованной таблицы, которое меньше [Date] в текущей строке.

Функция EARLIER используется для перехода к предыдущему filtercontext, который является rowcontext, для получения значения [Date] из текущей строки.

Таким образом, VAR prevTime - это предыдущий [Date] с теми же [ID] и [Version]. Если предыдущая [Дата] не существует, значение prevTime равно BLANK.

Calculated time =
VAR prevTime =
    CALCULATE (
        MAX ( 'Table'[Date] ),
        ALLEXCEPT ( 'Table', 'Table'[ID], 'Table'[Version] ),
        'Table'[Date] < EARLIER ( 'Table'[Date] )
    )
RETURN
    IF ( ISBLANK ( prevTime ), BLANK (), 'Table'[Date] - prevTime )
...