基于筛选器中的最后日期显示最后状态的 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:
我将数据从 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: