求DAX代码:按ID查找首次匹配指定状态集的记录
标记工作项首次达到指定状态集的DAX计算列
核心需求实现
针对Azure DevOps工作项状态变更数据表,以下DAX代码可创建计算列,精准标记每个工作项首次进入指定状态集的记录,为后续SLA合规性统计提供依据:
首次达标标记 = VAR 指定状态集 = {"已完成", "已关闭"} // 替换为你的目标状态集合 VAR 当前工作项ID = '工作项状态变更表'[工作项ID] VAR 当前变更日期 = '工作项状态变更表'[状态变更日期] // 获取当前工作项首次进入指定状态集的最早日期 VAR 首次达标日期 = CALCULATE( MIN('工作项状态变更表'[状态变更日期]), FILTER( ALL('工作项状态变更表'), '工作项状态变更表'[工作项ID] = 当前工作项ID && '工作项状态变更表'[状态] IN 指定状态集 ) ) // 判断当前记录是否为首次达标记录 RETURN IF( 当前变更日期 = 首次达标日期 && '工作项状态变更表'[状态] IN 指定状态集, "是", "否" )
代码细节说明
指定状态集:直接替换为你实际需要监控的状态列表,比如{"已解决", "已验收"}首次达标日期:通过CALCULATE+MIN组合逻辑,筛选当前工作项所有进入指定状态的记录,提取最早的状态变更日期- 最终判断:仅当当前记录的状态属于指定集合,且变更日期与首次达标日期完全匹配时,标记为"是",其余记录标记为"否"
可选:直接集成SLA合规判断
如果需要在同一计算列中完成SLA合规性判断(是否超过7天),可使用以下扩展代码:
SLA合规标记 = VAR 指定状态集 = {"已完成", "已关闭"} VAR 当前工作项ID = '工作项状态变更表'[工作项ID] VAR 当前变更日期 = '工作项状态变更表'[状态变更日期] VAR 首次达标日期 = CALCULATE( MIN('工作项状态变更表'[状态变更日期]), FILTER( ALL('工作项状态变更表'), '工作项状态变更表'[工作项ID] = 当前工作项ID && '工作项状态变更表'[状态] IN 指定状态集 ) ) VAR 创建日期 = '工作项状态变更表'[工作项创建日期] VAR 天数差 = DATEDIFF(创建日期, 首次达标日期, DAY) RETURN IF( 当前变更日期 = 首次达标日期 && '工作项状态变更表'[状态] IN 指定状态集, IF(天数差 <=7, "合规", "不合规"), BLANK() )
内容的提问来源于stack exchange,提问作者Chris D King
相关产品推荐
相关产品推荐

