如何保留行上下文,用度量值校验最新时序数据并生成精准告警?
修正方案:时序数据违规告警与度量值上下文修复
一、修复行上下文丢失的度量值
1. 滚动均值Rolling Average
原代码因嵌套SUMMARIZE和CALCULATE导致上下文混乱,调整后确保滚动窗口按维度正确分区:
Rolling Average = AVERAGEX( WINDOW( -5, REL, 0, REL, ALLSELECTED(AllData[Date], AllData[Attribute], AllData[SiteName]), ORDERBY(AllData[Date]), PARTITIONBY(AllData[Attribute], AllData[SiteName]) ), AllData[Value] )
说明:移除冗余的聚合嵌套,直接引用字段值,确保按Attribute+SiteName分区计算最近6个周期(含当前)的均值。
2. 突变异常sudden_change
替换SELECTEDVALUE为MAX避免上下文丢失,简化逻辑:
sudden_change = VAR CurrentValue = MAX(AllData[Value]) VAR RollingAvg = [Rolling Average] RETURN IF( CurrentValue > 1.7 * RollingAvg || CurrentValue < 0.3 * RollingAvg, CurrentValue, BLANK() )
说明:用变量存储当前值与滚动均值,直接判断是否超出阈值,避免嵌套IF的冗余写法。
3. 3标准差异常Reactive 3Std
确保当前值与对应维度的3标准差阈值匹配:
Reactive 3Std = VAR CurrentValue = MAX(AllData[Value]) VAR StdThreshold = [3StdDev] RETURN IF( CurrentValue > StdThreshold, CurrentValue, BLANK() )
说明:如果[3StdDev]未做分区处理,需给其添加PARTITIONBY(AllData[Attribute], AllData[SiteName])逻辑,保证阈值与当前数据维度一致。
4. QA/QC异常purple dots measure
简化非空判断逻辑:
purple dots measure = VAR MaxPurpleDot = MAX(AllData[Purple dot]) RETURN IF(NOT(ISBLANK(MaxPurpleDot)), MaxPurpleDot, BLANK())
二、精准告警提示Message TARP
重构度量值,生成带具体违规原因的提示文本:
Message TARP = VAR MostRecentDate = MAX(AllData[Date]) VAR LatestContext = FILTER(ALLSELECTED(AllData), AllData[Date] = MostRecentDate) -- 检查各规则触发状态 VAR Is3StdViolation = NOT(ISBLANK(CALCULATE([Reactive 3Std], LatestContext))) VAR IsSuddenChangeViolation = NOT(ISBLANK(CALCULATE([sudden_change], LatestContext))) VAR IsPurpleDotViolation = NOT(ISBLANK(CALCULATE([purple dots measure], LatestContext))) -- 拼接违规原因 VAR ViolationReasons = CONCATENATEX( { IF(Is3StdViolation, "3标准差异常"), IF(IsSuddenChangeViolation, "突变异常"), IF(IsPurpleDotViolation, "QA/QC异常") }, [Value], "、" ) RETURN IF( NOT(ISBLANK(ViolationReasons)), "最新数据点触发告警:" & ViolationReasons & ",请跟进处理。", BLANK() )
说明:
- 用
LatestContext统一管理最新日期的筛选逻辑,避免重复编写筛选器 - 逐个校验违规规则,生成具体原因列表
- 多规则触发时自动拼接原因,输出清晰的告警文本
三、验证要点
- 确认
[3StdDev]已按Attribute和SiteName分区计算均值+3标准差 - 在卡片/表格组件中测试
Message TARP,验证最新数据违规时是否显示对应原因 - 检查
Rolling Average按日期、属性、站点分组后是否输出正确的滚动均值
内容的提问来源于stack exchange,提问作者flashliquid
相关产品推荐
相关产品推荐

