基于筛选器中的最后日期显示最后状态的 DAX 度量

DAX Measure to Show Last Status Based on Last Date in a Filter

我将数据从 Jira 数据库提取到 Power BI 报告中以获取 Scrum sprint 指标。我正在尝试显示冲刺结束时问题所在的最后状态。我创建了两个度量——一个显示问题状态在 sprint 中更改的最后日期,另一个我想显示该状态是什么。

| Issue_ID |  NEWSTATUS  | CHANGEDATE              | Sprint_Name | Sprint_Start_Date       | Sprint End Date         |
| -------- | ----------- | ----------------------- | ----------- | ----------------------- | ----------------------- |
|  1101    |    Done     | 2020-04-15 08:33:27.547 | SPRINT1     | 2020-04-01 11:16:28.000 | 2020-04-15 08:50:17.000 |
|  1101    | Validation  | 2020-04-15 07:39:48.160 | SPRINT1     | 2020-04-01 11:16:28.000 | 2020-04-15 08:50:17.000 |
|  1101    |    Test     | 2020-04-15 07:26:46.603 | SPRINT1     | 2020-04-01 11:16:28.000 | 2020-04-15 08:50:17.000 |
|  1101    | In Progress | 2020-04-09 10:28:01.217 | SPRINT1     | 2020-04-01 11:16:28.000 | 2020-04-15 08:50:17.000 |

最后一个日期度量工作正常。它显示了在 sprint 开始和结束的时间范围内更改问题状态的最后日期。

Status Date =
MAXX (
    TOPN (
        1,
        FILTER (
            StoriesToSprints,
            StoriesToSprints[CHANGEDATE] <= StoriesToSprints[Sprint_End_Date]
                && StoriesToSprints[CHANGEDATE] >= StoriesToSprints[Sprint_Start_Date]
                && StoriesToSprints[FIELD] = "status"
        ),
        StoriesToSprints[CHANGEDATE], DESC
    ),
    StoriesToSprints[CHANGEDATE]
)

最后一个状态 Measure 不工作。它将状态缩小为一条记录,但它不是按日期计算的最后一条记录。

Last Sprint Status = 
MAXX(
    FILTER (
        StoriesToSprints,
        StoriesToSprints[CHANGEDATE] = [Status Date]
    ),
    StoriesToSprints[NEWSTATUS]
)

我已经搞砸了这个措施好几天了,似乎无法拉出正确的状态。有什么想法吗?

更新:

[Status Date] 度量正在返回最新日期,但由于某种原因 [NEWSTATUS] 未返回来自 table 的关联状态。它返回验证而不是完成,即使完成的最后状态在 Sprint_Start_Date 和 Sprint_End_Date.

| Issue_ID |  Last Sprint Status |       Status Date       |
| -------- | ------------------- | ----------------------- | 
|  1101    |      Validation     | 2020-04-15 08:33:27.547 | 

您应该在 Last Sprint Status 度量中使用已经定义的 Status Date 度量。

Last Sprint Status =
VAR StatusDate = [Status Date]
RETURN
    MAXX (
        FILTER (
            StoriesToSprints,
            StoriesToSprints[CHANGEDATE] = StatusDate
        ),
        StoriesToSprints[NEWSTATUS]
    )

对于其他方法,您可能对此感兴趣post: