PowerPivot DAX:确定每个项目/案例的最新状态

时间:2016-12-15 17:35:49

标签: powerpivot dax

我是DAX的新手

我正在IT服务台上工作,我希望有一个仪表板,可以显示当时的“运行案例”。

这些案件具有不同的状态,如:AWAITING - IN PROGRESS - PLANNED - CLOSED。

案件正在考虑作为“运行案例”,当他们获得以下的状态,除了“已关闭”

目标是为每个正在运行的案例(不关闭)设置最后状态,以显示工作负载

这是期望的结果: Desired Result

如何达到此结果以及完整数据是什么? 这是4天的交易表和9个案例: Transaction tables after 4 days for each cases

我尝试使用这些和其他DAX语法,但我没有得到预期的结果。

= COUNTROWS(FILTER(表1; MAX(表1 [日期])))

= CALCULATE(COUNTROWS(表1); FILTER(ALL(表1);表1 [日期]&LT = MAX(表1 [日期])))

我很难配置正确的DAX语法,以便获得如下所需的结果。

非常感谢您对此事的帮助

1 个答案:

答案 0 :(得分:0)

创建一个度量来获取StatusCLOSED不同的每个日期的行数。

Running Cases =
CALCULATE (
    COUNTROWS ( Table1 ),
    FILTER ( Table1, Table1[Status] <> "CLOSED" )
)

在数据透视表中使用此度量,您将得到:

enter image description here enter image description here

请注意,在您想要的结果示例中,08.12.2016的运行案例值为3,但在示例数据集中,我只能计算2,希望这是输入错误。

更新:在上下文日期之前获取运行案例。

ClosedOn中创建名为Table1的计算列,并使用以下DAX表达式。

=
IF (
    ISBLANK (
        CALCULATE (
            MIN ( [Date] ),
            FILTER (
                Table1,
                [Date] >= EARLIER ( Table1[Date] )
                    && [ID_Case] = EARLIER ( Table1[ID_Case] )
                    && [Status] = "CLOSED"
            )
        )
    ),
    MAXX ( Table1, [Date] ) + 1,
    CALCULATE (
        MIN ( [Date] ),
        FILTER (
            Table1,
            [Date] >= EARLIER ( Table1[Date] )
                && [ID_Case] = EARLIER ( Table1[ID_Case] )
                && [Status] = "CLOSED"
        )
    )
)

此计算列将告诉我们案件何时结束。

然后,您可以在运行案例度量中使用该计算列,如下所示:

Running Cases :=
CALCULATE (
    DISTINCTCOUNT ( Table1[ID_Case] ),
    FILTER (
        ALL ( Table1 ),
        [Date] <= MAX ( [Date] )
            && [ClosedOn] > MAX ( [Date] )
    )
)

您的数据透视表中的结果应如下所示:

enter image description here

如果有帮助,请告诉我。