【问题标题】:How to find DateDiff from same column with condition in Power BI如何在 Power BI 中从具有条件的同一列中查找 DateDiff
【发布时间】:2019-11-19 17:54:00
【问题描述】:

我在 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

【问题讨论】:

  • 您在寻找计算列还是度量?你能告诉我们你想要的结果是什么样的吗?
  • @Macro Vos 我想要测量应该返回两个日期之间的天数。我想使用该度量来显示视觉上特定状态更改所需的天数。

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


【解决方案1】:

如果您想要测量,请尝试这样的方法。对于两个状态之间的每个期间,您需要创建另一个度量。 When more than one [EnrollId] is selected, the measure returns a blank.

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-visual 看起来像这样。如您所见,表格视觉效果不受切片器的影响。

编辑 这是我使用的表:

【讨论】:

  • @Macro Vos 我可以为多个 EnrollId 做什么?
  • 什么意思?在我的回答中,我使用了一个包含多个 EnrollId 的表。请参阅编辑。
  • 实际上我想显示多个 EnrollId 每年状态更改所需的平均天数。这意味着根据您编辑的表格数据,我必须显示平均天数 AppStarted - Enrollment = (47 + 59)/2 = 53 和 Avg Days Enrollment - Complete = (25 + 19)/2 = 22。您的表格显示为每个 EnrollId。我必须将它与 X 轴值作为年份的折线图和堆积柱形图一起使用。每次状态变化的视觉效果都会有所不同。
【解决方案2】:

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

对于计算列:

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

【讨论】:

    猜你喜欢
    • 2022-12-19
    • 2018-07-12
    • 2021-08-22
    • 1970-01-01
    • 2020-04-27
    • 2021-01-28
    • 2019-06-19
    • 2021-11-06
    • 2021-09-22
    相关资源
    最近更新 更多