Как найти DateDiff из того же столбца с условием в Power BI - PullRequest
1 голос
/ 10 июля 2019

У меня есть одна таблица в 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)]

или

[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

Ответы [ 2 ]

0 голосов
/ 10 июля 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 или табличное изображение будет выглядеть следующим образом.Как видите, срезы не влияют на табличное изображение.

enter image description here

РЕДАКТИРОВАТЬ Это таблица, которую я использовал:

enter image description here

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

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

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

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

outcome

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...