变点检测函数一般用于对时序数据中的变点检测。

变点检测函数支持两种变点形态:
  • 在指定时间段内的某些统计特性发生了变化。
  • 序列中存在较为明显的断层。

函数列表

函数 说明
ts_cp_detect 寻找时序序列中具有不同统计特性的区间,区间端点即为变点。
ts_breakout_detect 寻找时序序列中,某统计量发生陡升或陡降的点。

ts_cp_detect

函数格式:
  • 若您无法确定窗口大小,可以使用以下格式的ts_cp_detect函数,该函数调用的算法会默认使用长度等于10的窗口进行检测:

    select ts_cp_detect(x, y, amplePeriod,sampleMethod)
  • 若您需要根据业务曲线进行效果调试,可以使用以下格式的ts_cp_detect函数,通过设置参数minSize进行效果调优:

    select ts_cp_detect(x, y, minSize, samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
minSize 最小连续区间长度。 最小值为3,最大值不超过当前输入数据长度的1/10。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:
    * | select ts_cp_detect(stamp, value, 3, 1, 'avg') from (select __time__ - __time__ % 10 as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 
  • 输出结果:

显示项如下:
显示项 说明
横轴 unixtime 数据的时间戳,单位为秒,例如1537071480。
纵轴 src 未滤波前的数据,例如1956092.7647745228。
prob 该点为变点的概率,值的范围为0~1。

ts_breakout_detect

函数格式:
select ts_breakout_detect(x, y, winSize,  samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
winSize 最小连续区间长度。 最小值为3,最大值不超过当前输入数据长度的1/10。
samplePeriod 对当前时序数据进行采样的周期。 long类型,单位为秒。取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:
    * | select ts_breakout_detect(stamp, value, 3, 1, 'avg') from (select __time__ - __time__ % 10 as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 
  • 输出结果:



显示项如下:
显示项 说明
横轴 unixtime 数据的时间戳,单位为秒,例如1537071480。
纵轴 src 未滤波前的数据,例如1956092.7647745228。
prob 该点为变点的概率,值的范围为0~1。