平滑函数是针对输入的时序曲线进行平滑和简单的滤波操作,滤波操作通常是发现时序曲线形态的第一步。

函数列表

函数 说明
ts_smooth_simple 默认平滑函数,使用Holt Winters算法对时序数据平滑。
ts_smooth_fir 使用FIR滤波器对时序数据平滑。
ts_smooth_iir 使用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,samplePeriod,sampleMethod)
  • 若您可以确定滤波参数,可以根据需求自定义设置滤波参数:

    select ts_smooth_fir(x, y,array[],samplePeriod,sampleMethod)
参数说明如下:
参数 说明 取值
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]。
samplePeriod 对当前时序数据进行采样的周期。 long类型,单位为秒。取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:

    * | select ts_smooth_fir(stamp, value, 'rectangle', 4, 1, 'avg') from ( select __time__ - __time__ % 120 as stamp, avg(v) as value from log GROUP BY stamp order by stamp ) 

    输出结果:



  • 查询分析:

    * | select ts_smooth_fir(stamp, value, array[0.2, 0.4, 0.3, 0.1], 1, 'avg') 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[], samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
array[] IIR滤波算法中关于xi的具体参数。 数组格式,长度(length)的取值范围为2~15,且数组中元素的和为1。例如array[0.2, 0.4, 0.3, 0.1]。
array[] IIR滤波算法中关于yi−1的具体参数。 数组格式,长度(length)的取值范围为2~15,且数组中元素的和为1。例如array[0.2, 0.4, 0.3, 0.1]。
samplePeriod 对当前时序数据进行采样的周期。 long类型,单位为秒。取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:
    * | select ts_smooth_iir(stamp, value, array[0.2, 0.4, 0.3, 0.1], array[0.4, 0.3, 0.3], 1, 'avg') from ( select __time__ - __time__ % 120 as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
  • 输出结果:



显示项如下:
显示项 说明
横轴 unixtime 数据的Unixtime时间戳,单位为秒。
纵轴 src 未滤波前的数据。
filter 滤波之后的数据。