如何从Power BI中具有条件的同一列中查找DateDiff

时间:2019-07-10 06:59:46

标签: powerbi dax powerbi-desktop powerbi-datasource powerbi-custom-visuals

我在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 :(得分:0)

我的建议是选择“计算列”,您可以尝试将其调整为度量值,但是关于过滤器上下文还有更多因素要考虑。

对于计算列:

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

outcome

答案 1 :(得分:0)

如果要采取措施,请尝试类似的方法。对于两个状态之间的每个时间段,您需要创建另一个度量。选择多个[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 )
    )

卡片视觉效果或桌面视觉效果如下所示。如您所见,表格外观不受切片器的影响。

enter image description here

编辑 这是我使用的表格:

enter image description here