Kusto查询使用render anomalychart显示异常大数值问题排查求助
问题根因与修复方案
代码错误点
render语句的with参数语法错误:anomalycolumns参数仅用来指定存储异常标记的列名,你直接在后面追加fill_forward没有指定对应参数,导致渲染器误将该字段的数值叠加到异常标记的渲染逻辑中,最终出现超大值- 拼写错误:
series_decompose_anomalies的阈值参数你写的是Treshold,正确拼写为Threshold,参数不识别会导致异常检测逻辑使用默认配置,输出不符合预期的异常标记值 make-series的default参数配置错误:default=average属于无效配置,该参数需要指定具体的默认填充值,比如real(null)或者固定数值,错误配置会导致空值填充逻辑失效,生成超出合理范围的数值- 时间轴偏移逻辑需要验证:你强制指定了
from (_startTime-304m) to (_endTime-304m),如果_startTime和_endTime是面板的全局时间变量,强制偏移304分钟可能会导致渲染的时间范围和面板时间范围不匹配,看起来像是日期显示错误
修复后代码
C26503T | make-series Variable=avg(Value) default=real(null) on Timestamp from (_startTime-304m) to (_endTime-304m) step dtfinal | extend fill_forward=series_fill_linear(Variable,real(null),true) | extend (anomalies,score, baseline) = series_decompose_anomalies(fill_forward,1.5, -1, 'linefit') | project-away score | render anomalychart with( anomalycolumns=anomalies, ycolumns=pack_array(fill_forward, baseline), title="Compressor anomalies", ysplit=panels )
验证步骤
- 先去掉最后一行
render语句运行查询,检查输出的fill_forward、baseline、anomalies三个数组的数值是否在合理范围内,确认计算逻辑没有问题 - 检查时间轴数组的取值是否和你预期的时间范围匹配,排除时间转换错误导致的日期显示异常
- 如果还是有问题,可先把
ysplit=panels参数去掉,所有系列渲染在同一y轴下更容易排查数值范围问题
内容的提问来源于stack exchange,提问作者RIck
相关产品推荐
相关产品推荐

