異常を検出するには、予測および異常検出関数を使用して時系列曲線を予測し、予測曲線と実際の曲線の間のエラーのKsigmaと分位数を特定します。

機能一覧

機能説明
ts_predicate_simpleデフォルトパラメータを使用して時系列データをモデル化し、単純な時系列予測と異常検出を実行します。
ts_predicate_ar自己回帰モデル (AR) モデルを使用して時系列データをモデル化し、単純な時系列予測と異常検出を実行します。
ts_predicate_arma自己回帰移動平均 (ARMA) モデルを使用して時系列データをモデル化し、単純な時系列予測と異常検出を実行します。
ts_predicate_arima自己回帰統合移動平均 (ARIMA) モデルを使用して時系列データをモデル化し、単純な時系列予測と異常検出を実行します。
ts_regression_predict周期的な時系列曲線の傾向を正確に予測する。

シナリオ: この関数は、測定データ、ネットワークトラフィック、財務データ、および特定のルールに従うさまざまなビジネスデータを予測するために使用できます。

ts_anomaly_filterカスタム異常モードに基づいて、複数の時系列曲線で異常検出中に検出された異常をフィルタリングします。 この機能は、異常な曲線をすばやく見つけるのに役立ちます。

ts_predicate_simple

関数の形式:
select ts_predicate_simple( x, y, nPred, isSmooth) 
関数形式のパラメーターを次の表に示します。
項目説明
xタイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。各時点はUnixタイムスタンプです。 単位は秒です。
y指定された各時点に対応する数値データのシーケンス。N/A
nPred予測のポイント数。値はlongデータ型で、1以上でなければなりません。
isSmooth生データをフィルタリングするかどうかを指定します。 値はBooleanデータ型です。 デフォルト値はtrueで、生データがフィルター処理されることを示します。
例:
  • クエリステートメントは次のとおりです。
    * | select ts_predicate_simple(stamp, value, 6) from (select __time__ - __time__ % 60をスタンプとして、avg(v) を値としてログのGROUP BYスタンプ注文からスタンプ)
  • 出力結果以下の図にテスト結果を示します。
The次の表を表示項目。
表示項目説明
横軸unixtimeデータのUnixタイムスタンプ。 単位は秒です。
垂直軸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タイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。各時点はUnixタイムスタンプです。 単位は秒です。
y指定された各時点に対応する数値データのシーケンス。N/A
pARモデルの順序。値はlongデータ型です。 有効な値: 2、3、4、5、6、7、および8。
nPred予測のポイント数。値はlongデータ型です。 有効値: [1, 5 × p] 。
isSmooth生データをフィルタリングするかどうかを指定します。 値はBooleanデータ型です。 デフォルト値はtrueで、生データがフィルター処理されることを示します。
クエリ文の例を次に示します。
* | select ts_predicate_ar(stamp, value, 3,4) from (select __time__ - __time__ % 60をstampとして、avg(v) を値として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タイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。各時点はUnixタイムスタンプです。 単位は秒です。
y指定された各時点に対応する数値データのシーケンス。N/A
pARモデルの順序。値はlongデータ型です。 有効な値: [2, 100] 。
qARMAモデルの順序。値はlongデータ型です。 有効な値: 2、3、4、5、6、7、および8。
nPred予測のポイント数。値はlongデータ型です。 有効値: [1, 5 × p] 。
isSmooth生データをフィルタリングするかどうかを指定します。 値はBooleanデータ型です。 デフォルト値はtrueで、生データがフィルター処理されることを示します。
クエリ文の例を次に示します。
* | 選択ts_predicate_arma (スタンプ、値、3、2、4) から (選択__時間__ - __時間__ % 60としてスタンプ、avg(v) 値ログからGROUP BYスタンプによる注文スタンプ) 
説明 出力結果は、ts_predicate_simple関数と同様です。 詳細については、ts_predicate_simple関数の出力結果をご参照ください。

ts_predicate_arima

関数の形式:
select ts_predicate_arima( x, y, p, d, q, nPred, isSmooth) 
関数形式のパラメーターを次の表に示します。
項目説明
xタイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。各時点はUnixタイムスタンプです。 単位は秒です。
y指定された各時点に対応する数値データのシーケンス。N/A
pARモデルの順序。値はlongデータ型です。 有効な値: 2、3、4、5、6、7、および8。
dARIMAモデルの順序。値はlongデータ型です。 有効な値: [1, 3] 。
qARMAモデルの順序。値はlongデータ型です。 有効な値: 2、3、4、5、6、7、および8。
nPred予測のポイント数。値はlongデータ型です。 有効値: [1, 5 × p] 。
isSmooth生データをフィルタリングするかどうかを指定します。 値はBooleanデータ型です。 デフォルト値はtrueで、生データがフィルター処理されることを示します。
クエリ文の例を次に示します。
* | 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_predicate_simple関数と同様です。 詳細については、ts_predicate_simple関数の出力結果をご参照ください。

ts_regression_predict

関数の形式:
select ts_regression_predict( x, y, nPred, algotype, processType)
関数形式のパラメーターを次の表に示します。
項目説明
xタイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。各時点はUnixタイムスタンプです。 単位は秒です。
y指定された各時点に対応する数値データのシーケンス。N/A
nPred予測のポイント数。値はlongデータ型です。 有効な値: [1, 500] 。
アルゴタイプ予測のアルゴリズムタイプ。有効な値:
  • origin: 予測に勾配ブースト回帰ツリー (GBRT) アルゴリズムを使用します。
  • forest: GBRTアルゴリズムを使用して、季節分解によって分解されたトレンド成分とLoess (STL) を使用したトレンド分解に基づいて予測し、加法モデルを使用して分解された成分を合計し、予測データを取得します。
  • linear: STLによって分解されたトレンド成分に基づく予測に線形回帰アルゴリズムを使用し、次に加法モデルを使用して分解された成分を合計し、予測データを取得します。
processTypeデータを前処理するかどうかを指定します。有効な値:
  • 0: 追加のデータ前処理は行わない。
  • 1: 予測前に異常データが除去される。
例:
  • クエリステートメントは次のとおりです。
    * およびh : nu2h05202.nu8および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 order BY stamp)
  • 出力結果以下の図にテスト結果を示します。
表示项目一覧を次の表に示します。
表示項目説明
横軸unixtimeデータのUnixタイムスタンプ。 単位は秒です。
垂直軸src生データ。
predictフィルタリング演算後に生成されたデータが実行される。

ts_anomaly_filter

関数の形式:
select ts_anomaly_filter( lineNametsdspredsprobsnWatchanomalyType)
関数形式のパラメーターを次の表に示します。
項目説明
lineName各カーブの名前。 値はvarchar型です。N/A
ts現在のカーブの時間を示すカーブの時間シーケンス。 パラメーター値は、昇順でソートされたdoubleデータ型の時点の配列です。N/A
dsカーブの実際の値シーケンス。 パラメーター値は、doubleデータ型のデータポイントの配列です。 このパラメーター値はtsパラメーター値と同じ長さです。N/A
プレドカーブの予測値シーケンス。 パラメーター値は、doubleデータ型のデータポイントの配列です。 このパラメーター値はtsパラメーター値と同じ長さです。N/A
probsカーブの異常検出結果のシーケンス。 パラメーター値は、doubleデータ型のデータポイントの配列です。 このパラメーター値はtsパラメーター値と同じ長さです。N/A
nWatch曲線上の最近観察された実際の値の数。 値はlongデータ型です。 値は、カーブ上の時点の数よりも小さくなければなりません。N/A
anomalyTypeフィルタリングする異常のタイプ。 値はlongデータ型です。有効な値:
  • 0: すべての異常
  • 1: ポジティブな異常
  • -1: 否定的な異常
例:
  • クエリステートメントは次のとおりです。
    * | t 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 lower, res[6] as probs 
         from (
             select name, array_transpose(ts_predicate_ar(stamp, value, 10)) as res 
             from (
               名前で '% asg-%') グループのような名前のログから名前、スタンプ、値を選択します。
  • 出力結果
    | 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] |