平滑函数是针对输入的时序曲线进行平滑和简单的滤波操作,滤波操作通常是发现时序曲线形态的第一步。
函数列表
函数 | 说明 |
| 默认平滑函数,使用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
滤波后的数据。