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

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

函数列表

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

ts_cp_detect

函数格式:
  • 若您无法确定窗口大小,可以使用如下格式的函数,该函数调用的算法默认会使用长度为10的窗口进行检测。
    select ts_cp_detect(x, y, samplePeriod)
  • 若您需要根据业务曲线进行效果调试,可以使用如下格式的函数,通过设置参数minSize进行效果调试。
    select ts_cp_detect(x, y, minSize) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
minSize 最小连续区间长度。 最小值为3,最大值不超过当前输入数据长度的1/10。
示例:
  • 查询分析
    * | select ts_cp_detect(stamp, value, 3) 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) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
winSize 最小连续区间长度。 最小值为3,最大值不超过当前输入数据长度的1/10。
示例:
  • 查询分析
    * | select ts_breakout_detect(stamp, value, 3) 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。