平滑函数是针对输入的时序曲线进行平滑和简单的滤波操作,滤波操作通常是发现时序曲线形态的第一步。
函数列表
| 函数 | 说明 | 
| 
 | 默认平滑函数,使用Holt-Winters算法对时序数据进行滤波操作。 | 
| 
 | 使用FIR滤波器对时序数据进行滤波操作。 | 
| 
 | 使用IIR滤波器对时序数据进行滤波操作。 | 
ts_smooth_simple
- 函数格式: - select ts_smooth_simple(x, y)
- 参数说明: - 参数 - 说明 - 取值 - x - 时间列,顺序为从小到大。 - Unixtime时间戳,单位为秒。 - y - 数值列,对应某时刻的数据。 - - 
- 示例 - 查询分析语句: - * | select ts_smooth_simple(stamp, value) from ( select '("__time__" - ("__time__" % 120))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
- 输出结果:  
 
- 显示项: - 显示项 - 说明 - 横轴 - unixtime - 数据的时间戳,单位为秒。 - 纵轴 - src - 滤波前的数据。 - filter - 滤波后的数据。 
ts_smooth_fir
- 函数格式: - 若您无法确定滤波参数,请使用内置窗口的参数进行滤波操作。 - select ts_smooth_fir(x, y,winType,winSize)
- 若您可以确定滤波参数,可以根据需求自定义设置滤波参数。 - select ts_smooth_fir(x, y,array[])
 
- 参数说明: - 参数 - 说明 - 取值 - x - 时间列,从小到大排列。 - 格式为Unixtime时间戳,单位为秒。 - y - 数值列,对应某时刻的数据。 - - - winType - 滤波的窗口类型。 - 取值包括: - rectangle:矩形窗口。 
- hanning:汉宁窗。 
- hamming:汉明窗。 
- blackman:布莱克曼窗。 
 说明- 推荐您选择rectangle类型以获得更好的显示效果。 - winSize - 滤波窗口的长度。 - long类型,取值范围为2~15。 - array[] - FIR滤波的具体参数。 - 格式为数组,且数组中元素的和为1。例如array[0.2, 0.4, 0.3, 0.1]。 
- 示例1 - 查询分析语句: - * | select ts_smooth_fir(stamp, value, 'rectangle', 4) from ( select '("__time__" - ("__time__" % 120))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
- 输出结果:  
 
- 示例2 - 查询分析语句: - * | select ts_smooth_fir(stamp, value, array[0.2, 0.4, 0.3, 0.1]) from ( select '("__time__" - ("__time__" % 120))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
- 输出结果:  
 
- 显示项: - 显示项 - 说明 - 横轴 - unixtime - 数据的Unixtime时间戳,单位为秒。 - 纵轴 - src - 滤波前的数据。 - filter - 滤波后的数据。 
ts_smooth_iir
- 函数格式: - select ts_smooth_iir(x, y, array[], array[] )
- 参数说明: - 参数 - 说明 - 取值 - x - 时间列,从小到大排列。 - 格式为Unixtime时间戳,单位为秒。 - y - 数值列,对应某时刻的数据。 - - - array[] - IIR滤波算法中关于x i的具体参数。 - 数组格式,长度(length)的取值范围为2~15,且数组中元素的和为1。例如array[0.2, 0.4, 0.3, 0.1]。 - array[] - IIR滤波算法中关于y i−1的具体参数。 - 数组格式,长度(length)的取值范围为2~15,且数组中元素的和为1。例如array[0.2, 0.4, 0.3, 0.1]。 
- 示例 - 查询分析语句: - * | select ts_smooth_iir(stamp, value, array[0.2, 0.4, 0.3, 0.1], array[0.4, 0.3, 0.3]) from ( select '("__time__" - ("__time__" % 120))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
- 输出结果:  
 
- 显示项: - 显示项 - 说明 - 横轴 - unixtime - 数据的Unixtime时间戳,单位为秒。 - 纵轴 - src - 滤波前的数据。 - filter - 滤波后的数据。