预测与异常检测函数通过预测时序曲线、寻找预测曲线和实际曲线之间误差的Ksigma与分位数等特性进行异常检测。

函数列表

函数 说明
ts_predicate_simple 利用默认参数对时序数据进行建模,并进行简单的时序预测和异常点的检测。
ts_predicate_ar 使用自回归模型对时序数据进行建模,并进行简单的时序预测和异常点的检测。
ts_predicate_arma 使用移动自回归模型对时序数据进行建模,并进行简单的时序预测和异常点检测。
ts_predicate_arima 使用带有差分的移动自回归模型对时序数据进行建模,并进行简单的时序预测和异常点检测。
ts_regression_predict 针对含有周期性、趋势性的单时序序列,进行准确且长时序预测。

使用场景:计量数据的预测、网络流量的预测、财务数据的预测、以及具有一定规律的不同业务数据的预测。

ts_anomaly_filter 针对批量曲线进行时序异常检测后,可以按照用户定义的异常模式来过滤异常检测的结果。能帮助用户快速找出异常的实例曲线。
说明 预测与异常检测系列函数的显示项相同,输出结果和对应说明请查看ts_predicate_simple输出结果示例

ts_predicate_simple

函数格式:
select ts_predicate_simple(x, y, nPred, isSmooth, samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
nPred 预测未来的点的数量。 long类型,取值范围为1~5*p
isSmooth 是否需要将原始数据做滤波操作。

不指定该参数时,默认为true,即将原始数据做滤波操作。

bool类型,取值包括:
  • true:表示将原始数据做滤波操作。
  • false:表示对原始数据不做滤波操作。
默认为true。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:
    * | select ts_predicate_simple(stamp, value, 6, 1, 'avg') 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, samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
p 自回归模型的阶数。 long类型,取值范围为2~8。
nPred 预测未来的点的数量。 long类型,取值范围为1~5*p
isSmooth 是否需要将原始数据做滤波操作。

不指定该参数时,默认为true,即将原始数据做滤波操作。

bool类型,取值包括:
  • true:表示将原始数据做滤波操作。
  • false:表示对原始数据不做滤波操作。
默认为true。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
查询分析示例:
* | select ts_predicate_ar(stamp, value, 3, 4, 1, 'avg') from (select __time__ - __time__ % 60 as stamp, avg(v) as value from log GROUP BY stamp order by stamp)

ts_predicate_arma

函数格式:
select ts_predicate_arma(x, y, p, q, nPred, isSmooth, samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
p 自回归模型的阶数。 long类型,取值范围为2~100。
q 移动平均模型的阶数。 long类型,取值范围为2~8。
nPred 预测未来的点的数量。 long类型,取值范围为1~5*p
isSmooth 是否需要将原始数据做滤波操作。

不指定该参数时,默认为true,即将原始数据做滤波操作。

bool类型,取值包括:
  • true:表示将原始数据做滤波操作。
  • false:表示对原始数据不做滤波操作。
默认为true。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
查询分析示例:
* | select ts_predicate_arma(stamp, value, 3, 2, 4, 1, 'avg') from (select __time__ - __time__ % 60 as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 

ts_predicate_arima

函数格式:
select ts_predicate_arima(x, y, p, dqnPred, isSmooth, samplePeriod, sampleMethod) 
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
p 自回归模型的阶数。 long类型,取值范围为2~8。
d 差分模型的阶数。 long类型,取值范围为1~3。
q 移动平均模型的阶数。 long类型,取值范围为2~8。
nPred 预测未来的点的数量。 long类型,取值范围为1~5*p
isSmooth 是否需要将原始数据做滤波操作。

不指定该参数时,默认为true,即将原始数据做滤波操作。

bool类型,取值包括:
  • true:表示将原始数据做滤波操作。
  • false:表示对原始数据不做滤波操作。
默认为true。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
查询分析示例:
* | select ts_predicate_arima(stamp, value, 3, 1, 2, 4, 1, 'avg') from (select __time__ - __time__ % 60 as stamp, avg(v) as value from log GROUP BY stamp order by stamp)

ts_regression_predict

函数格式:
select ts_regression_predict(x, y, nPred, algo_type,processType, samplePeriod, sampleMethod)
参数说明如下:
参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
nPred 预测未来的点的数量。 long类型,取值范围为1~500。
algo_type 针对的预测的算法类型。 取值包括:
  • origin:使用GBRT(Gradient Boosted Regression Tree)算法进行预测。
  • forest:使用STL序列分解的结果,将分解得到的趋势序列使用GBRT算法进行预测,再将分解出来的序列按照加法模型进行求和后返回。
  • linear:使用STL序列分解的结果,将分解得到趋势序列使用Linear Regression算法进行预测,再将分解出来的序列按照加法模型进行求和后返回。
processType 数据对应的预处理流程选择。
  • processType = 0:此时并不进行任何的额外数据预处理。
  • processType = 1:此时进行去除异常后再进行预测处理。
samplePeriod 对当前时序数据进行采样的周期。 long类型,取值范围为1~86399。
sampleMethod 针对采样窗口内数据的采样方法。 取值包括:
  • avg:表示取窗口内数据的平均值。
  • max:表示取窗口内数据的最大值。
  • min:表示取窗口内数据的最小值。
  • sum:表示取窗口内数据的总和。
示例:
  • 查询分析:
    * and h : nu2h05202.nu8 and m: NET |  select ts_regression_predict(stamp, value, 200, 'origin', 1, 'avg') 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类型,表示要过滤的异常类型的种类。
  • 0:表示关注全部异常。
  • 1:表示关注上升沿异常。
  • -1:表示下降沿异常。
示例:
  • 查询分析:
    * | 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] |