如何用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
相关产品推荐
相关产品推荐

