You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Power BI统计Azure DevOps工作项各状态停留时长?

计算Azure DevOps工作项状态停留时长的Power BI解决方案

完全可行,以下是针对你现有数据模型的具体实现步骤:

1. 为工作项状态记录添加排序索引

先给同一个Work Item Id下的历史记录按Date升序排序,生成索引方便后续关联下一次状态变更的日期:

状态排序 = 
VAR 当前工作项 = '你的表名'[Work Item Id]
RETURN
RANKX(
    FILTER('你的表名', '你的表名'[Work Item Id] = 当前工作项),
    '你的表名'[Date],
    ,
    ASC,
    DENSE
)

2. 获取下一次状态变更的日期

为每条状态记录匹配同一个工作项的下一条状态记录日期;如果是当前活跃状态(IsCurrent=TRUE),就用今日日期作为结束日期:

下一次状态日期 = 
VAR 当前工作项 = '你的表名'[Work Item Id]
VAR 当前排序 = '你的表名'[状态排序]
RETURN
LOOKUPVALUE(
    '你的表名'[Date],
    '你的表名'[Work Item Id], 当前工作项,
    '你的表名'[状态排序], 当前排序 + 1,
    IF('你的表名'[IsCurrent] = TRUE(), TODAY(), BLANK())
)

3. 过滤非状态变更记录(关键步骤)

由于数据中存在非状态变更的冗余记录,先标记出真正的状态变更行,避免干扰计算:

是否状态变更 = 
VAR 当前工作项 = '你的表名'[Work Item Id]
VAR 上一次状态 = MAXX(
    FILTER('你的表名', '你的表名'[Work Item Id] = 当前工作项 && '你的表名'[Date] < EARLIER('你的表名'[Date])),
    '你的表名'[State]
)
RETURN
IF(ISBLANK(上一次状态) || '你的表名'[State] <> 上一次状态, TRUE(), FALSE())

完成后在数据视图筛选是否状态变更=TRUE(),只保留状态变更的有效记录。

4. 计算状态停留时长

取该状态的首次进入日期与下一次状态变更日期的差值,得到停留天数:

状态停留时长(天) = 
VAR 当前工作项 = '你的表名'[Work Item Id]
VAR 当前状态 = '你的表名'[State]
VAR 首次进入日期 = MINX(
    FILTER('你的表名', '你的表名'[Work Item Id] = 当前工作项 && '你的表名'[State] = 当前状态),
    '你的表名'[Date]
)
RETURN
DATEDIFF(首次进入日期, '你的表名'[下一次状态日期], DAY)

5. 整理报表

在报表视图中,将Work Item Id和State拖入行区域,状态停留时长(天)拖入值区域,即可展示每个工作项在各状态的停留时长。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:23:28