平滑函数

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

函数列表

函数

说明

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

    滤波后的数据。