Как найти DateDiff из того же столбца с условием в Power BI

У меня есть одна таблица в PowerBI, которая имеет 3 столбца: 1.EnrollId 2.Status 3.StatusChangeDate. Один EnrollId имеет 4 статуса и их конкретные statusChangeDates. Я хочу найти нет. дней между двумя датами с условием статуса.

EnrollId   Status         StatusChangeDate
101        AppStart       15/02/2019
101        Application    27/03/2019
101        Enrollment     03/04/2019
101        Complete       28/04/2019

Я хочу создать формулу в DAX, например

[StatusChangeDate (where Status="Enrollment") - StatusChangeDate(where status="AppStart)]

or

[StatusChangeDate (where Status="Complete")- StatusChangeDate(where status="Enrollment)]

i.e.  03/04/2019 - 15/02/2019 = 44 Days
      28/04/2019 - 03/04/2019 = 25 Days

person Ankita patil    schedule 10.07.2019    source источник
comment
Вы ищете вычисляемый столбец или меру? Вы можете показать нам, как будет выглядеть результат, который вы хотите?   -  person Marco Vos    schedule 10.07.2019
comment
@Macro Vos Мне нужна мера, которая должна возвращать количество дней между двумя датами. Я хочу использовать эту меру, чтобы показать количество дней, необходимых для определенного изменения статуса на визуальном элементе.   -  person Ankita patil    schedule 10.07.2019


Ответы (2)


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

Для вычисляемого столбца:

DaysLastChange = 
VAR _currentStatusChangeDate = [StatusChangeDate]
VAR _currentEnrollId = [EnrollId]
RETURN
    DATEDIFF(
        CALCULATE(MAX('Table1'[StatusChangeDate]);FILTER('Table1';_currentEnrollId = [EnrollId] && _currentStatusChangeDate > [StatusChangeDate] ));
        _currentStatusChangeDate;
        DAY
    )

результат

person mxix    schedule 10.07.2019

Если вам нужны меры, попробуйте что-то вроде этого. Для каждого периода между двумя Статусами необходимо создать еще одну меру. Если выбрано несколько [EnrollId], показатель возвращает пустое значение.

Days Enrollment - Complete =
VAR scDateEnrollment =
    CALCULATE ( MAX ( 'Table'[StatusChangeDate] ), 'Table'[Status] = "Enrollment" )
VAR scDateComplete =
    CALCULATE ( MAX ( 'Table'[StatusChangeDate] ), 'Table'[Status] = "Complete" )
RETURN
    IF (
        HASONEVALUE ( 'Table'[EnrollId] ),
        DATEDIFF ( scDateEnrollment, scDateComplete, DAY )
    )

Cardvisuals или table-visuals будут выглядеть так. Как видите, слайсер не влияет на визуальный элемент таблицы.

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

ИЗМЕНИТЬ Это таблица, которую я использовал:

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

person Marco Vos    schedule 10.07.2019
comment
@Macro Vos Что я могу сделать для нескольких EnrollId? - person Ankita patil; 10.07.2019
comment
Что ты имеешь в виду? В своем ответе я использовал таблицу с несколькими EnrollId. См. Правка. - person Marco Vos; 10.07.2019
comment
На самом деле я хочу показать среднее количество дней, необходимых для изменения статуса в год для нескольких EnrollIds. Это означает, что в соответствии с данными, отредактированными вами в таблице, я должен показать среднее количество дней, когда AppStarted - Enrollment = (47 + 59) / 2 = 53 и Avg Days Enrollment - Complete = (25 + 19) / 2 = 22. Ваша таблица отображается для каждый EnrollId. И я должен использовать это с линейной и составной столбчатой ​​диаграммой со значением оси X как год. Визуальные эффекты будут отличаться при каждом изменении статуса. - person Ankita patil; 10.07.2019