多周期估计函数支持对不同时间段内的时序进行周期估计,利用傅立叶变换等一系列操作进行周期的提取。

ts_period_detect

该函数用于对时序数据进行分段周期估计。

函数格式:
select ts_period_detect(x, y,minPeriod,maxPeriod,samplePeriod,sampleMethod)
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
minPeriod 预估计周期最小长度占序列总长度的比例。 小数形式,取值范围为(0,1]。
maxPeriod 预估计周期最大长度占序列总长度的比例。
说明 指定参数时, maxPeriod必须大于 minPeriod
小数形式,取值范围为(0,1]。
samplePeriod 对当前时序数据进行采样的周期。 long类型,单位为秒。取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:

    * | select ts_period_detect(stamp, value, 0.2, 1.0, 1, 'avg') from ( select __time__ - __time__ % 120 as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
  • 输出结果:



显示项如下:
显示项 说明
period_id 周期编号的数组,长度为1,其中值为0.0时,表示原始序列。
time_series 表示时间戳序列。
data_series 表示每个时间戳对应的结果。
  • 当period_id为0.0时,表示原始序列结果。
  • 当period_id不为0.0时,表示滤波之后的周期估计结果。

ts_period_classify

函数格式:
select ts_period_classify(stamp, value,instanceName)
参数说明如下:
参数 说明 取值
stamp 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
value 数值列,对应某时刻的数据。 -
instanceName 曲线对应的名称。 -
示例:
  • 查询分析:
    * and h : nu2h05202.nu8 | select ts_period_classify(stamp, value, name) from log
  • 输出结果:

显示项如下:
显示项 说明
line_name 周期编号的数组,长度为1,其中值为0.0时,表示原始序列。
prob 时序曲线中主周期的的占比[0, 1],实验中可以取0.15。
type 曲线的类别:
  • type = -1:表示曲线长度太短(小于64个点)。
  • type = -2:表示曲线缺失率很高(缺失率超过20%)。
  • type = 0:表示曲线是有明显周期。