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

函数列表

函数 说明
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)
    • 若您可以确定滤波参数,可以根据需求自定义设置滤波参数。
      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 滤波之后的数据。