去除数据异常值
                    Contents
                    
                
                
            问题
在数据的世界里,我们常常会遇到各种各样的“怪兽”——异常值。这些异常值就像捣乱的顽皮鬼,总是试图扭曲我们对数据的理解。但别担心,今天介绍一个强大的魔法工具——quantile_over_time,它能帮助我们驯服这些顽皮鬼,找到数据的“中坚力量”。

方案
在我的ORP数据检测中,有时候会出现一个有趣的现象:ORP在393和394之间来回跳跃,但是摄像头因为光线的缘故,会拍摄成399,这是一个典型的错误数据,我也可以用代码去除这个不正常数字,但是最后发现用Prometheus的quantile_over_time是最佳的解决方案。
quantile_over_time 是 Prometheus 中的一个强大工具,它可以根据指定的时间范围计算数据的分位数。分位数是一种统计工具,可以帮助我们更好地理解数据的分布情况,而不受异常值的影响。
首先我们要理解分位数,它是一种将数据分成若干等份的值。例如:
- 0.5 分位数(中位数):表示数据中有一半的值小于或等于这个值,另一半的值大于或等于这个值。
- 0.1 分位数:表示数据中有 10% 的值小于或等于这个值。
- 0.9 分位数:表示数据中有 90% 的值小于或等于这个值。
|  |  | 
具体使用
假设过去 15 分钟内的ORP数据是:
|  |  | 
排序后的数据,中位数(0.5 分位数)为第 3个值:394
|  |  | 
结果
使用 quantile_over_time(0.5, ORP[15m]),你得到的结果是 394 。这个值完全忽略了异常值 399 。最终曲线非常的丝滑:
