变点检测函数一般用于对时序数据中的变点进行检测。
变点检测函数支持对如下两种变点形态进行检测:
指定时间段内的某些统计特性发生了变化。
序列数据中存在较为明显的断层。
函数列表
函数 | 说明 |
寻找时序序列中具有不同统计特性的区间,区间端点即为变点。 | |
寻找时序序列中,某统计量发生陡升或陡降的点。 |
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。 |