預測與異常檢測函數通過預測時序曲線、尋找預測曲線和實際曲線之間誤差的Ksigma與分位元等特性進行異常檢測。
函數列表
函數 | 說明 |
利用預設參數對時序資料進行建模,並進行簡單的時序預測和異常點的檢測。 | |
使用自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點的檢測。 | |
使用移動自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點檢測。 | |
使用帶有差分的移動自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點檢測。 | |
針對具有周期性、趨勢性的單時序序列,進行準確的預測。 使用情境:計量資料的預測、網路流量的預測、財務資料的預測、以及具有一定規律的不同業務資料的預測。 | |
針對批量曲線進行時序異常檢測後,可以按照使用者定義的異常模式來過濾異常檢測的結果,協助使用者快速找出異常的執行個體曲線。 |
ts_predicate_simple
函數格式:
select ts_predicate_simple(x, y, nPred, isSmooth)
參數說明如下:
參數 | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳記,單位為秒。 |
y | 數值列,對應某時刻的資料。 | - |
nPred | 預測未來的點的數量。 | long類型,取值大於等於1。 |
isSmooth | 是否需要對未經處理資料做濾波操作。 | bool類型,預設為true表示對未經處理資料做濾波操作。 |
樣本:
查詢分析
* | select ts_predicate_simple(stamp, value, 6) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
輸出結果
顯示項目如下:
顯示項目 | 說明 | |
橫軸 | unixtime | 資料的Unixtime時間戳記,單位為秒。 |
縱軸 | src | 未經處理資料。 |
predict | 預測的資料。 | |
upper | 預測的上界。當前信賴度為0.85,不可修改。 | |
lower | 預測的下界。當前信賴度為0.85,不可修改。 | |
anomaly_prob | 該點為異常點的機率,範圍為0~1。 |
ts_predicate_ar
函數格式:
select ts_predicate_ar(x, y, p, nPred, isSmooth)
參數說明如下:
參數 | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳記,單位為秒。 |
y | 數值列,對應某時刻的資料。 | - |
p | 自迴歸模型的階數。 | long類型,取值範圍為2~8。 |
nPred | 預測未來的點的數量。 | long類型,取值範圍為1~5*p。 |
isSmooth | 是否需要對未經處理資料做濾波操作。 | bool類型,預設為true表示對未經處理資料做濾波操作。 |
查詢分析樣本:
* | select ts_predicate_ar(stamp, value, 3, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。
ts_predicate_arma
函數格式:
select ts_predicate_arma(x, y, p, q, nPred, isSmooth)
參數說明如下:
參數 | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳記,單位為秒。 |
y | 數值列,對應某時刻的資料。 | - |
p | 自迴歸模型的階數。 | long類型,取值範圍為2~100。 |
q | 移動平均模型的階數。 | long類型,取值範圍為2~8。 |
nPred | 預測未來的點的數量。 | long類型,取值範圍為1~5*p。 |
isSmooth | 是否需要對未經處理資料做濾波操作。 | bool類型,預設為true表示對未經處理資料做濾波操作。 |
查詢分析樣本:
* | select ts_predicate_arma(stamp, value, 3, 2, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。
ts_predicate_arima
函數格式:
select ts_predicate_arima(x, y, p, d, q, nPred, isSmooth)
參數說明如下:
參數 | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳記,單位為秒。 |
y | 數值列,對應某時刻的資料。 | - |
p | 自迴歸模型的階數。 | long類型,取值範圍為2~8。 |
d | 差分模型的階數。 | long類型,取值範圍為1~3。 |
q | 移動平均模型的階數。 | long類型,取值範圍為2~8。 |
nPred | 預測未來的點的數量。 | long類型,取值範圍為1~5*p。 |
isSmooth | 是否需要對未經處理資料做濾波操作。 | bool類型,預設為true表示對未經處理資料做濾波操作。 |
查詢分析樣本:
* | select ts_predicate_arima(stamp, value, 3, 1, 2, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。
ts_regression_predict
函數格式:
select ts_regression_predict(x, y, nPred, algotype,processType)
參數說明如下:
參數 | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳記,單位為秒。 |
y | 數值列,對應某時刻的資料。 | - |
nPred | 預測未來的點的數量。 | long類型,取值範圍為1~500。 |
algotype | 針對的預測的演算法類型。 | 取值包括:
|
processType | 資料對應的預先處理流程。 | 取值包括:
|
樣本:
查詢分析
* and h : nu2h05202.nu8 and m: NET | select ts_regression_predict(stamp, value, 200, 'origin') from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log group by stamp order by stamp)
輸出結果
顯示項目如下:
顯示項目 | 說明 | |
橫軸 | unixtime | 資料的Unixtime時間戳記,單位為秒。 |
縱軸 | src | 未經處理資料。 |
predict | 預測資料。 |
ts_anomaly_filter
函數格式:
select ts_anomaly_filter(lineName, ts, ds, preds, probs, nWatch, anomalyType)
參數說明如下:
參數 | 說明 | 取值 |
lineName | varchar類型,表示每條曲線的名稱。 | - |
ts | 曲線的時間序列,表示當前這條曲線的時間資訊。array(double)類型,由小到大排列。 | - |
ds | 曲線的實際值序列,表示當前這條曲線的數值資訊。array(double)類型,長度與ts相同。 | - |
preds | 曲線的預測值序列,表示當前這條曲線的預測值。array(double)類型,長度與ts相同。 | - |
probs | 曲線的異常檢測序列,表示當前這條曲線的異常檢測結果。array(double)類型,長度與ts相同。 | - |
nWatch | long類型,表示當前曲線中最近觀測的實際值的數量,長度必須小於實際的曲線長度。 | - |
anomalyType | long類型,表示要過濾的異常類型的種類。 | 取值包括:
|
樣本:
查詢分析
* | select res.name, res.ts, res.ds, res.preds, res.probs from ( select ts_anomaly_filter(name, ts, ds, preds, probs, cast(5 as bigint), cast(1 as bigint)) as res from ( select name, res[1] as ts, res[2] as ds, res[3] as preds, res[4] as uppers, res[5] as lowers, res[6] as probs from ( select name, array_transpose(ts_predicate_ar(stamp, value, 10)) as res from ( select name, stamp, value from log where name like '%asg-%') group by name)) );
輸出結果
| name | ts | ds | preds | probs | | ------------------------ | ---------------------------------------------------- | ----------- | --------- | ----------- | | asg-bp1hylzdi2wx7civ0ivk | [1.5513696E9, 1.5513732E9, 1.5513768E9, 1.5513804E9] | [1,2,3,NaN] | [1,2,3,4] | [0,0,1,NaN] |