Spotfire中标记失控流程:识别连续4周偏离中位数的作业
在Spotfire中检测连续4周偏离中位数的作业
前提说明
你已经完成基础数据处理:按作业+周计算了运行时间中位数,生成了标记列(标记周中位数是高于/低于全年中位数)。接下来通过以下计算列实现连续4周相同标记的检测和作业筛选:
1. 为每个作业的周按时间排序
先创建计算列周排序序号,确保每个作业的周按时间顺序编号,避免周号乱序影响连续判断:
Rank([周], "asc", [作业])
这个列会给每个作业的第一周赋值1,第二周2,以此类推。
2. 检测当前周是否属于连续4周相同标记的区间
创建计算列连续4周偏离,判断当前周及往前3周的标记是否完全一致且为偏离状态:
If( [周排序序号] >= 4, If( CountIf(Window([标记], -3, 0), [标记] = First(Window([标记], -3, 0))) = 4 And First(Window([标记], -3, 0)) <> "正常", "是", "否" ), "否" )
Window([标记], -3, 0):取当前周和往前3周的标记值,形成连续4周的窗口CountIf(...) =4:统计窗口内和第一个标记值相同的数量,等于4说明4周标记完全一致- 额外排除“正常”标记,只保留高于/低于的连续情况
3. 筛选出存在连续偏离的作业
最后创建计算列需标记作业,标记该作业是否出现过连续4周的偏离情况:
If(Max([连续4周偏离]) Over ([作业]) = "是", "需标记", "无需标记")
之后你可以通过筛选需标记作业为“需标记”的行,直接得到所有符合条件的作业;或者查看连续4周偏离为“是”的行,定位具体的偏离时间段。
注意事项
- 如果你的数据中存在作业的周数据缺失(比如某作业某周没运行),需要先补全缺失周的记录(标记为“正常”或根据实际情况处理),否则连续4周的判断会跳过缺失周,导致结果不准确。
- 如果标记列的取值不是“正常”,比如直接用“高于”“低于”,可以把判断条件里的
<> "正常"改成[标记] In ("高于", "低于")。
内容的提问来源于stack exchange,提问作者Christopher Johnson
相关产品推荐
相关产品推荐

