文档

多周期估计函数

更新时间:

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

函数列表

函数

说明

ts_period_detect

对不同时间段内的时序数据进行周期估计。

ts_period_classify

通过傅立叶变换,计算输入时序曲线的周期性。该方法可以较好地用于快速判断曲线的周期性。

ts_period_detect

函数格式:

select ts_period_detect(x,y,minPeriod,maxPeriod)

参数说明如下:

参数

说明

取值

x

时间列,从小到大排列。

格式为Unixtime时间戳,单位为秒。

y

数值列,对应某时刻的数据。

minPeriod

根据您的时序曲线,预估周期最小长度占序列总长度的比例。

小数形式,取值范围为(0,1]。

maxPeriod

根据您的时序曲线,预估周期最大长度占序列总长度的比例。

重要

maxPeriod必须大于minPeriod,且不超过0.5。如果您设置的maxPeriod超过0.5,系统默认按0.5执行。

小数形式,取值范围为(0,1]。

示例:

  • 查询分析

    * | select ts_period_detect(stamp, value, 0.2, 0.5) from ( select '("__time__" - ("__time__" % 120))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp )
  • 返回结果

    返回结果为数组类型,包括Unix时间戳、统计的数值(例如平均流量)以及周期状态码(一个1.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

曲线名称。

prob

时序曲线中主周期的占比,范围为[0, 1],实验中可以取0.15。

type

曲线的类别:

  • type = -1:表示曲线长度太短(小于64个点)。

  • type = -2:表示曲线缺失率很高(缺失率超过20%)。

  • type = 0:表示曲线有明显的周期性。