變點檢測函數一般用於對時序資料中的變點進行檢測。
變點檢測函數支援對如下兩種變點形態進行檢測:
指定時間段內的某些統計特性發生了變化。
序列資料中存在較為明顯的斷層。
函數列表
函數 | 說明 |
尋找時序序列中具有不同統計特性的區間,區間端點即為變點。 | |
尋找時序序列中,某統計量發生陡升或陡降的點。 |
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。 |