すべてのプロダクト
Search
ドキュメントセンター

Lindorm:時系列異常検出

最終更新日:Feb 24, 2025

このトピックでは、時系列異常を検出するために使用されるアルゴリズムと構文について説明します。

適用可能なエンジンとバージョン

時系列異常検出構文は、LindormTSDB にのみ適用できます。 時系列異常検出構文は、LindormTSDB のすべてのバージョンでサポートされています。

制限事項

時系列異常検出構文は、SAMPLE BY 句と一緒に使用する必要があります。

概要

時系列異常検出は、指定された時系列の異常点を検出するために、DAMO Academy によって開発されたオンライン異常検出アルゴリズムをサポートしています。 検出中に、これらのアルゴリズムは、データの傾向や期間などの時系列データの特性を継続的に学習し、新しく挿入された時系列ポイントの異常を検出します。 たとえば、新しく追加された時系列ポイントの値が他のポイントと大きく異なる場合、アルゴリズムはこのポイントが異常であると想定します。

SAMPLE BY 句を使用して、時系列異常検出を以下の方法で使用できます。

  • SAMPLE BY 0 句を使用して、すべての時系列の各データポイントを検出します。 この句の使用方法の詳細については、例 1例 2、および 例 3 をご参照ください。

  • SAMPLE BY INTERVAL 句を使用して、ダウンサンプリング間隔を指定し、MIN、MAX、AVG、COUNT、SUM などのネストされたダウンサンプリング演算子を使用します。

    重要

    INTERVAL の値を 0 にすることはできません。

    この句の使用方法の詳細については、例 4 をご参照ください。

  • SAMPLE BY 0 句と、LATEST、DELTA、RATE などのネストされたダウンサンプリング演算子を使用して、異なるデータをクエリします。 この句の使用方法の詳細については、例 5 をご参照ください。

構文

select_sample_by_statement ::=  SELECT ( select_clause )
                                FROM table_identifier
                                WHERE where_clause
                                SAMPLE BY 0
select_clause              ::=  selector [ AS identifier ] ( ',' selector [ AS identifier ] )
selector                   ::=  tag_identifier, | time | anomaly_detect '(' field_identifier ',' algo_identifier | model_identifier [ ',' options] ')'
where_clause               ::=  relation ( AND relation )* (OR relation)*
relation                   ::=  ( field_identifier| tag_identifier, ) operator term
operator                   ::=  '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY

構文では、anomaly_detect は異常検出関数を示します。 次の表では、構成できるパラメーターについて説明します。

パラメーター

説明

field_identifier

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

algo_identifier

異常の検出に使用されるアルゴリズムの名前。 DAMO Academy によって開発されたオンライン異常検出アルゴリズムがサポートされています。

  • esd: 監視曲線のスパイクや少数のデータポイントが他のデータポイントと大きく異なるシナリオなど、スパイク状の異常点に適用できるアルゴリズム。

  • nsigma: シンプルで異常の原因を分析しやすいアルゴリズム。

  • ttest: 時系列データに関連するメトリックが平均値の変化によって異常であるかどうかを識別するために使用されるアルゴリズム。

  • istl-esd: 周期的なデータの異常を検出するために適用できるアルゴリズム。

説明

algo_identifier パラメーターは、データベース内機械学習が有効になっておらず、時系列データに関連する異常を検出する必要があるシナリオに適用できます。

model_identifier

異常の検出に使用されるモデルの名前。

説明
  • model_identifier パラメーターの値は VARCHAR 型です。

  • model_identifier パラメーターは、データベース内機械学習が有効になっており、時系列データに関連する異常を検出する必要があるシナリオに適用できます。 詳細については、データベース内機械学習 をご参照ください。

options

検出効果を調整するために使用されるオプション。 このパラメーターはオプションです。 key1=value1 key2=value2 の形式でオプションを構成します。

カテゴリ

次の表では、LindormTSDB でサポートされている異常検出アルゴリズムと、アルゴリズムが適用できるシナリオについて説明します。

アルゴリズム

シナリオ

esd

  • このアルゴリズムは、単一の異常点を検出できます。

  • このアルゴリズムは、異常なデータのスパイクを検出するために適用できます。 このアルゴリズムは、値が他のポイントと大きく異なる少数の異常点を正確に検出できます。

nsigma

  • このアルゴリズムは、単一の異常点を検出できます。

  • このアルゴリズムはシンプルで使いやすくなっています。 このアルゴリズムによって返された結果を使用して、検出された異常の根本原因を簡単に特定できます。

説明

このアルゴリズムを使用して、値が他のポイントと大きく異なる少数の異常点を検出することはお勧めしません。 この場合、このアルゴリズムによって返される検出結果は不正確になる可能性があります。

ttest

  • このアルゴリズムは、特定の時間ウィンドウ内の時系列データを検出できます。

  • このアルゴリズムは、特定の時間ウィンドウ内の指定されたメトリックの平均値の変化によって引き起こされる異常を検出します。 たとえば、このアルゴリズムは、指定された時間ウィンドウ内の時系列配列の平均値が、参照時間ウィンドウ内の時系列配列の平均値と大きく異なるかどうかを検出できます。

    • lenDetectWindow で指定された配列の長さを確認することで、時系列データの異常を検出する時間ウィンドウを取得できます。

    • lenHistoryWindow で指定された配列の長さを確認することで、参照時間ウィンドウを取得できます。

Incremental STL with ESD (istl-esd)

このアルゴリズムは、周期的なデータの異常を検出するために適用できます。 istl-esd アルゴリズムは、DAMO Academy によって開発された Incremental STL アルゴリズムです。 Incremental STL アルゴリズムは、周期的な増分データを周期項、傾向項、残余項に分解できます。 istl-esd アルゴリズムは、Incremental STL アルゴリズムと esd アルゴリズムを統合しています。 Incremental STL アルゴリズムは周期的な増分データを分解するために使用され、esd アルゴリズムは周期データから分解された残余項の異常を検出するために使用されます。 esd アルゴリズムは、分解された残余項に基づいて非周期的なスパイクを検出できます。

Incremental STL with Nsigma (istl-nsigma)

このアルゴリズムは、周期的なデータの異常を検出するために適用できます。 Incremental STL アルゴリズムは、周期的な増分データを周期項、傾向項、残余項に分解できます。 istl-nsigma アルゴリズムは、Incremental STL アルゴリズムと nsigma アルゴリズムを統合しています。 Incremental STL アルゴリズムは周期的な増分データを分解するために使用され、nsigma アルゴリズムは周期データから分解された残余項の異常を検出するために使用されます。 nsigma アルゴリズムは、分解された残余項に基づいて非周期的なスパイクを検出できます。

次の図は、さまざまなアルゴリズムの適用シナリオを示しています。

  • esd: このアルゴリズムは、時系列の各データポイントを検出するために使用でき、安定した値を持つ多数の正常なデータポイントの中に少数の異常なデータポイントが存在するシナリオに適用できます。image.png

  • nsigma: このアルゴリズムは、時系列の各データポイントを検出するために使用でき、異常なデータポイントの値が履歴平均値と大きく異なるシナリオに適用できます。 このアルゴリズムの n パラメーターを構成して、データポイントの値と履歴平均値の間の許容差を調整できます。image.png

  • ttest: このアルゴリズムは、時間ウィンドウ内の時系列データから異常を検出するために使用でき、指定されたメトリックの平均値が 2 つの連続する時間ウィンドウ内で大きく変化するシナリオに適用できます。

    image.pngimage.png

  • istl-esd: このアルゴリズムは、周期的な時系列データの異常を検出するために使用できます。 このアルゴリズムは、元のデータの周期項を削除してから、esd アルゴリズムを使用して異常を検出します。 istl-esd アルゴリズムは、安定した値を持つ多数の正常な周期データポイントの中に少数の異常なデータポイントが存在するシナリオに適用できます。

    image.png

  • istl-nsigma: このアルゴリズムは、周期的な時系列データの異常を検出するために使用できます。 このアルゴリズムは、元のデータの周期項を削除してから、nsigma アルゴリズムを使用して異常を検出します。 istl-nsigma アルゴリズムは、異常なデータポイントの値が履歴平均値と大きく異なるシナリオに適用できます。image.png

パラメーター

使用する異常検出アルゴリズムのパラメーターを構成できます。 これらのパラメーターは、共通パラメーター、トレーニングパラメーター、および推論パラメーターに分類できます。 オプションパラメーター options を指定して、異常検出アルゴリズムの検出パフォーマンスを調整できます。

説明
  • 共通パラメーター、トレーニングパラメーター、および推論パラメーターは、同じパラメーターリストで構成されます。 たとえば、ttest アルゴリズムのパラメーターは、lenDetectWindow=100,adhoc_stat=true の形式で構成できます。

  • 理想的な検出結果を得るためのパラメーターの構成方法の詳細については、統計アルゴリズムのパラメーター調整 および 分解アルゴリズムのパラメーター調整 をご参照ください。

共通パラメーター

共通パラメーターを構成して、異常検出中にアルゴリズムによって実行されるデバッグ、診断、およびその他の動作を制御できます。 共通パラメーターは、サポートされているすべての異常検出アルゴリズムに適用できます。 次の表では、構成できる共通パラメーターについて説明します。

パラメーター

タイプ

デフォルト値

説明

verbose

BOOLEAN

FALSE

詳細情報を返し、指定された列の検出結果を識別するかどうかを指定します。 返される情報は、使用するアルゴリズムによって異なります。 有効な値:

  • TRUE

  • FALSE

このパラメーターを TRUE に設定すると、返される結果に追加の列が表示され、詳細情報が表示されます。 詳細については、「verbose パラメーターに対して返される詳細情報」セクションをご参照ください。

adhoc_state

BOOLEAN

FALSE

アルゴリズムの異常検出ステータスが現在のクエリでのみ使用可能かどうかを指定します。 異常検出ステータスの詳細については、例外検出ステータス をご参照ください。

direction

VARCHAR

UP

検出する異常のタイプ。 有効な値:

  • Up: 時系列データの異常な増加のみが異常として検出されます。

  • Down: 時系列データの異常な減少のみが異常として検出されます。

  • Both: 時系列データの異常な増加と減少の両方が異常として検出されます。

verbose パラメーターに対して返される詳細情報

アルゴリズム

追加の列

タイプ

有効な値

説明

esd

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: 現在のデータポイントは異常です。

  • FALSE: 現在のデータポイントは正常です。

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: 現在のデータポイントに異常は検出されていません。

  • UNKNOW: 現在のデータポイントに異常が検出されていますが、分類されていません。

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: 現在のデータポイントの値は、ウィンドウ内の統計値よりも大きくなっています。

  • DOWN: 現在のデータポイントの値は、ウィンドウ内の統計値よりも小さくなっています。

  • NONE: 現在のデータポイントは正常であり、anomaly 列の値は FALSE です。

anomalyScore

DOUBLE

[0, Double.MAX_VALUE]

検出された異常のスコア。 値が大きいほど、現在のデータポイントの異常がより顕著になります。

threshold

DOUBLE

[0, Double.MAX_VALUE]

アルゴリズムが現在のデータポイントが異常かどうかを判断するために使用するしきい値。

anomalyScore 列の値が threshold 列の値よりも大きい場合、現在のデータポイントは異常です。 anomalyScore 列の値が threshold 列の値よりも小さい場合、現在のデータポイントは正常です。

しきい値は、alpha パラメーターと lenHistoryWindow パラメーターに基づいて計算されます。 しきい値は、alpha の値が減少するか、lenHistoryWindow の値が増加すると増加します。

upperBound

DOUBLE

DOUBLE 型のすべての値

異常検出の上限。

たとえば、maxAnomalyRatio パラメーターを 0.3 に設定すると、upperBound 列の値は、ウィンドウ内の順序付けられたデータの 70%(次の式で計算:1 - maxAnomalyRatio)分布値になります。 この場合、値が upperBound 値よりも小さいデータポイントは、異常として検出されません。

説明

ウィンドウの長さは、lenHistoryWindow パラメーターによって指定されます。

データポイントの値が [lowerBound, upperBound] の範囲内にある場合、アルゴリズムはデータポイントが正常であると判断します。 データポイントの値が範囲内にない場合、アルゴリズムはデータポイントの anomalyScore の値を計算します。 データポイントの anomalyScore が threshold 列の値よりも大きい場合、データポイントは異常と判断されます。

lowerBound

DOUBLE

DOUBLE 型のすべての値

異常検出の下限。

たとえば、maxAnomalyRatio パラメーターを 0.3 に設定すると、lowerBound 列の値は、ウィンドウ内の順序付けられたデータの 30% 分布値になります。 この場合、値が lowerBound 値よりも大きいデータポイントは、異常として検出されません。

説明

ウィンドウの長さは、lenHistoryWindow パラメーターによって指定されます。

データポイントの値が [lowerBound, upperBound] の範囲内にある場合、アルゴリズムはデータポイントが正常であると判断します。 データポイントの値が範囲内にない場合、アルゴリズムはデータポイントの anomalyScore の値を計算します。 データポイントの anomalyScore が threshold 列の値よりも大きい場合、データポイントは異常と判断されます。

mean

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの平均値。

median

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの中央値。

std

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの標準偏差。

latestTimestamp

LONG

正の整数

ウィンドウ内の最新のデータポイントのタイムスタンプ。

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: アルゴリズムは初期化中で、異常は検出されません。

  • FALSE: アルゴリズムは初期化されています。

ttest

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: 現在のデータポイントは異常です。

  • FALSE: 現在のデータポイントは正常です。

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: 現在のデータポイントに異常は検出されていません。

  • UNKNOW: 現在のデータポイントに異常が検出されていますが、分類されていません。

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: 現在のデータポイントの値は、ウィンドウ内の統計値よりも大きくなっています。

  • DOWN: 現在のデータポイントの値は、ウィンドウ内の統計値よりも小さくなっています。

  • NONE: 現在のデータポイントは正常であり、anomaly 列の値は FALSE です。

pValue

DOUBLE

(0, 1)

現在のデータポイントの値がウィンドウ内の統計値からどの程度逸脱しているかを示す比率。 値が大きいほど、現在のデータポイントの値が統計値から大きく逸脱していることを示します。

threshold

DOUBLE

(0, 1)

アルゴリズムが現在のデータポイントが異常かどうかを判断するために使用するしきい値。

  • pValue 列の値が threshold 列の値よりも小さい場合、現在のデータポイントは異常です。

  • pValue の値が threshold 列の値よりも大きい場合、現在のデータポイントは正常です。

trendScore

DOUBLE

DOUBLE 型のすべての値

データポイントの傾向の変化の度合い。 絶対値が大きいほど、傾向の変化がより顕著になります。

  • trendScore 列の値が 0 より大きい場合、データポイントの傾向は上昇しています。

  • trendScore 列の値が 0 より小さい場合、データポイントの傾向は下降しています。

mean

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの平均値。 ウィンドウの長さは、lenHistoryWindow パラメーターによって指定されます。

std

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの標準偏差。

latestTimestamp

LONG

正の整数

ウィンドウ内の最新のデータポイントのタイムスタンプ。

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: アルゴリズムは初期化中で、異常は検出されません。

  • FALSE: アルゴリズムは初期化されています。

nsigma

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: 現在のデータポイントは異常です。

  • FALSE: 現在のデータポイントは正常です。

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: 現在のデータポイントに異常は検出されていません。

  • UNKNOW: 現在のデータポイントに異常が検出されていますが、分類されていません。

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: 現在のデータポイントの値は、ウィンドウ内の統計値よりも大きくなっています。

  • DOWN: 現在のデータポイントの値は、ウィンドウ内の統計値よりも小さくなっています。

  • NONE: 現在のデータポイントは正常であり、anomaly 列の値は FALSE です。

anomalyScore

DOUBLE

[0, Double.MAX_VALUE]

検出された異常のスコア。 値が大きいほど、現在のデータポイントの異常がより顕著になります。

threshold

DOUBLE

[0, Double.MAX_VALUE]

判断のしきい値。現在のデータポイントが異常かどうかを判断するために使用されます。

anomalyScore 列の値が threshold 列の値よりも大きい場合、現在のデータポイントは異常です。 anomalyScore 列の値が threshold 列の値よりも小さい場合、現在のデータポイントは正常です。

mean

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの平均値。

std

DOUBLE

DOUBLE 型のすべての値

ウィンドウ内のデータポイントの標準偏差。

latestTimestamp

LONG

正の整数

ウィンドウ内の最新のデータポイントのタイムスタンプ。

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: アルゴリズムは初期化中で、異常は検出されません。

  • FALSE: アルゴリズムは初期化されています。

istl-esd

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: 現在のデータポイントは異常です。

  • FALSE: 現在のデータポイントは正常です。

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: 現在のデータポイントに異常は検出されていません。

  • UNKNOW: 現在のデータポイントに異常が検出されていますが、分類されていません。

residual

DOUBLE

DOUBLE 型のすべての値

周期成分と傾向成分が削除された後の元のデータの残差値。

ISTL アルゴリズムでは、データポイントは次の形式で 3 つの成分に分解されます:residual+trend+season

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

trend

DOUBLE

DOUBLE 型のすべての値

元のデータの傾向成分。

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

season

DOUBLE

DOUBLE 型のすべての値

元のデータの周期成分。

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: アルゴリズムは初期化中で、異常は検出されません。

    説明

    アルゴリズムを初期化するには、4 サイクルのデータポイントが必要です。 初期化中、residual 列、trend 列、および season 列に返される値は無効です。 これらの列にはデフォルト値の 0 が返されます。

  • FALSE: アルゴリズムは初期化されています。

その他の追加の列(esd アルゴリズムに対して返される追加の列と同じ)

esd アルゴリズムに対して返される列のデータ型と同じ。

esd アルゴリズムに対して返される列の有効な値と同じ。

異常検出関数を呼び出すときに esd.verbose=true を指定すると、esd 詳細モードが有効になります。

この場合、verbose モードの esd アルゴリズムと ttest アルゴリズムのすべての列(anomaly 列、warmup 列、および anomalyLevel 列を除く)が返されます。

istl-nsigma

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: 現在のデータポイントは異常です。

  • FALSE: 現在のデータポイントは正常です。

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: 現在のデータポイントに異常は検出されていません。

  • UNKNOW: 現在のデータポイントに異常が検出されていますが、分類されていません。

trend

DOUBLE

DOUBLE 型のすべての値

元のデータの傾向成分。

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

season

DOUBLE

DOUBLE 型のすべての値

元のデータの周期成分。

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

residual

DOUBLE

DOUBLE 型のすべての値

周期成分と傾向成分が削除された後の元のデータの残差値。

アルゴリズムが初期化中の場合(warmup 列の値が TRUE)、この列にはデフォルト値の 0 のみが返されます。

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: アルゴリズムは初期化中で、異常は検出されません。

    説明

    アルゴリズムを初期化するには、4 サイクルのデータポイントが必要です。 初期化中、residual 列、trend 列、および season 列に返される値は無効です。 これらの列にはデフォルト値の 0 が返されます。

  • FALSE: アルゴリズムは初期化されています。

その他の追加の列(nsigma アルゴリズムに対して返される追加の列と同じ)

nsigma アルゴリズムに対して返される列のデータ型と同じ。

nsigma アルゴリズムに対して返される列の有効な値と同じ

異常検出関数を呼び出すときに nsigma.verbose=true を指定すると、nsigma 詳細モードが有効になります。

トレーニングパラメーター

アルゴリズムを指定し、トレーニングパラメーターを構成して、異常の検出に使用するモデルを決定できます。 LindormTSDB を再起動すると、トレーニングパラメーターの値はクリアされます。 この場合、トレーニングパラメーターを再構成してモデルをトレーニングする必要があります。 モデルは、検出中にリアルタイムでトレーニングされ、時系列データの特性を学習および適応させます。

説明

トレーニングパラメーターを構成する際には、次の点に注意してください。

  • パラメーター名の大文字と小文字は区別されません。

  • トレーニングパラメーターの値には、数字と文字列を使用できます。NULL は使用できません。

  • パラメーターの値は、特定の範囲内にある必要があります。

アルゴリズム

パラメーター

タイプ

有効な値

説明

esd

compression

INTEGER

正の整数。 有効な値:(10,1000)。 デフォルト値:100。

アルゴリズムのデータ構造の空間計算量。 このパラメーターの値が大きいほど、アルゴリズムは検出中に多くのメモリを使用し、より正確な結果を返します。

lenHistoryWindow

INTEGER

有効な値:20 以上の正の整数。 デフォルト値:null。

参照時間ウィンドウの長さ。 短い参照時間ウィンドウを指定すると、時間ウィンドウ内の最近のデータポイントのみが検出中に参照として使用されます。 このパラメーターを null に設定すると、最初の検出後に挿入されたすべてのデータポイントが参照として使用されます。

nsigma

lenHistoryWindow

INTEGER

有効な値:20 以上の正の整数。 デフォルト値:null。

参照時間ウィンドウの長さ。 短い参照時間ウィンドウを指定すると、時間ウィンドウ内の最近のデータポイントのみが検出中に参照として使用されます。 このパラメーターを null に設定すると、最初の検出後に挿入されたすべてのデータポイントが参照として使用されます。

ttest

lenDetectWindow

INTEGER

正の整数。 デフォルト値:10。

異常を検出する最新の時間ウィンドウの長さ。

lenHistoryWindow

INTEGER

有効な値:20 以上の正の整数。 デフォルト値:100。

参照時間ウィンドウの長さ。 短い参照時間ウィンドウを指定すると、時間ウィンドウ内の最近のデータポイントのみが検出中に参照として使用されます。 このパラメーターを null に設定すると、最初の検出後に挿入されたすべてのデータポイントが参照として使用されます。

説明

このパラメーターの値は、lenDetectWindow の値よりも大きくする必要があります。

istl-esd

frequency

VARCHAR

数字と時間単位で構成される文字列。 例:5M、24H、1D。

有効な時間単位:

  • n/ns: ナノ秒。

  • u/us: マイクロ秒。

  • m/ms: ミリ秒。

  • s/S: 秒。

  • M/min: 分。

  • H/h: 時間。

  • D/d: 日。

時系列データが収集される頻度。 たとえば、1 時間ごとに 1 つの時系列データポイントが収集される場合は、このパラメーターを 1H に設定します。

重要
  • このパラメーターを指定しない場合、アルゴリズムは時系列データが収集される頻度を自動的に計算します。 ただし、時系列データに多くの値が欠落している場合、計算された頻度は不正確になる可能性があります。

  • frequency パラメーターを指定する場合、このパラメーターの値は、SAMPLE BY INTERVAL ステートメントで指定された INTERVAL パラメーターの値と同じである必要があります。

periods

VARCHAR

数字と時間単位で構成される文字列。 例:5M、24H、1D。

有効な時間単位:

  • n/ns: ナノ秒。

  • u/us: マイクロ秒。

  • m/ms: ミリ秒。

  • s/S: 秒。

  • M/min: 分。

  • H/h: 時間。

  • D/d: 日。

周期データの合計周期の長さ。 インデクサーを使用して複数の周期の長さを指定できます。 例:periods[0]=1440periods[1]=1880

説明

このパラメーターを指定しない場合、アルゴリズムは周期を自動的に計算します。

esd.*

該当なし

esd アルゴリズムを定義するために必要なトレーニングパラメーター。 これらのパラメーターは、この表の esd セクションで説明されているトレーニングパラメーターと同じです。 esd アルゴリズムのトレーニングパラメーターに esd. 接頭辞を追加して、これらのパラメーターを構成できます。 例:esd.lenHistoryWindow=10

istl-nsigma

frequency

VARCHAR

数字と時間単位で構成される文字列。 例:5M、24H、1D。

有効な時間単位:

  • n/ns: ナノ秒。

  • u/us: マイクロ秒。

  • m/ms: ミリ秒。

  • s/S: 秒。

  • M/min: 分。

  • H/h: 時間。

  • D/d: 日。

時系列データが収集される頻度。 たとえば、1 時間ごとに 1 つの時系列データポイントが収集される場合は、このパラメーターを 1H に設定します。

重要
  • このパラメーターを指定しない場合、アルゴリズムは時系列データが収集される頻度を自動的に計算します。 ただし、時系列データに多くの値が欠落している場合、計算された頻度は不正確になる可能性があります。

  • frequency パラメーターを指定する場合、このパラメーターの値は、SAMPLE BY INTERVAL ステートメントで指定された INTERVAL パラメーターの値と同じである必要があります。

periods

VARCHAR

数字と時間単位で構成される文字列。 例:5M、24H、1D。

有効な時間単位:

  • n/ns: ナノ秒。

  • u/us: マイクロ秒。

  • m/ms: ミリ秒。

  • s/S: 秒。

  • M/min: 分。

  • H/h: 時間。

  • D/d: 日。

周期データの合計周期の長さ。 インデクサーを使用して複数の周期の長さを指定できます。 例:periods[0]=1440periods[1]=1880

説明

このパラメーターを指定しない場合、アルゴリズムは周期を自動的に計算します。

nsigma.*

該当なし

nsigma アルゴリズムを定義するために必要なトレーニングパラメーター。 これらのパラメーターは、この表の nsigma セクションで説明されているトレーニングパラメーターと同じです。 nsigma アルゴリズムのトレーニングパラメーターに nsigma. 接頭辞を追加して、これらのパラメーターを構成できます。 例:nsigma.lenHistoryWindow=10

推論パラメーター

推論パラメーターは、異常検出中にのみ有効になり、大文字と小文字は区別されません。

アルゴリズム

パラメーター

タイプ

有効な値

説明

esd

alpha

DOUBLE

デフォルト値:0.1。 有効な値:(0,1)

異常検出の感度。 このパラメーターの値が大きいほど、アルゴリズムは異常に対してより敏感になり、より多くの異常を報告します。

direction

VARCHAR

デフォルト値:Up。

検出する異常のタイプ。

  • Up: 時系列データの異常な増加のみが異常として検出されます。

  • Down: 時系列データの異常な減少のみが異常として検出されます。

  • Both: 時系列データの異常な増加と減少の両方が異常として検出されます。

maxAnomalyRatio

DOUBLE

デフォルト値:0.3。 有効な値:(0,1]。 このパラメーターを 1 に設定すると、異常は返されません。

異常が検出される最大比率。 たとえば、maxAnomalyRatio を 0.3 に設定し、direction を Up に設定すると、値が 70 パーセンタイル未満のデータポイントは異常として検出されません。

  • direction を Up に設定すると、このパラメーターを構成して、値が小さいデータポイントが異常として検出されないようにすることができます。

  • direction を Down に設定すると、このパラメーターを構成して、値が大きいデータポイントが異常として検出されないようにすることができます。

warmupCount

INTEGER

正の整数。 デフォルト値:20。

アルゴリズムが異常の報告を開始するために必要なデータポイントの最小数。 たとえば、このパラメーターを 20 に設定すると、検出する必要があるデータポイントの数が 20 未満の場合、アルゴリズムは異常を報告しません。

nsigma

n

DOUBLE

ゼロ以外の浮動小数点数。 デフォルト値:3.0。

  • n を正の数に設定すると、現在の値と平均値の差が n と標準偏差の積よりも大きい場合、アルゴリズムは異常を報告します。

  • n を負の数に設定すると、平均値と現在の値の差が n と標準偏差の積よりも大きい場合、アルゴリズムは異常を報告します。

warmupCount

INTEGER

正の整数。 デフォルト値:20。

アルゴリズムが異常の報告を開始するために必要なデータポイントの最小数。 たとえば、このパラメーターを 20 に設定すると、検出する必要があるデータポイントの数が 20 未満の場合、アルゴリズムは異常を報告しません。

ttest

alpha

DOUBLE

デフォルト値:0.05。 有効な値:(0,1)

異常検出の感度。 このパラメーターの値が大きいほど、アルゴリズムは異常に対してより敏感になり、より多くの異常を報告します。

direction

VARCHAR

デフォルト値:Up。

検出する異常のタイプ。

  • Up: 時系列データの異常な増加のみが異常として検出されます。

  • Down: 時系列データの異常な減少のみが異常として検出されます。

  • Both: 時系列データの異常な増加と減少の両方が異常として検出されます。

istl-esd

esd.*

該当なし

esd アルゴリズムを定義するために必要な推論パラメーター。 これらのパラメーターは、この表の esd セクションで説明されている推論パラメーターと同じです。 esd アルゴリズムの推論パラメーターに esd. 接頭辞を追加して、これらのパラメーターを構成できます。 例:esd.direction=Both

istl-nsigma

nsigma.*

該当なし

nsigma アルゴリズムに必要な推論パラメーターを定義します。 詳細については、nsigma アルゴリズムの推論パラメーターセクションをご参照ください。 nsigma アルゴリズムの推論パラメーターに nsigma. 接頭辞を追加して、これらのパラメーターを構成できます。 例:nsigma.n=5

  • 例 1: esd アルゴリズムを使用して、sensor という名前の時系列テーブルの特定の時間範囲内の温度データの異常を検出します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    次の結果が返されます。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:02+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:03+08:00 | false         |
    +-----------+----------+---------------------------+---------------+
  • 例 2: esd アルゴリズムを使用して、sensor テーブルの特定の時間範囲内の F07A1260 デバイスの温度データの異常を検出します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE device_id in ('F07A1260') and time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    次の結果が返されます。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • 例 3: esd アルゴリズムを使用し、パラメーターを構成して、sensor テーブルの特定の時間範囲内の F07A1260 デバイスの温度データの異常を検出します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd', 'lenHistoryWindow=30,maxAnomalyRatio=0.1') AS detect_result FROM sensor WHERE device_id in ('F07A1260') and time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    次の結果が返されます。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • 例 4: ステートメントでネストされたダウンサンプリング演算子 MAX を使用し、ダウンサンプリング間隔を 1 分として指定します。

    SELECT time, anomaly_detect(max(temperature), 'esd') AS ad_result, max(temperature) AS rawVal FROM sensor SAMPLE BY 1m;

    次の結果が返されます。

    +---------------------------+-----------+-------------+
    |           time            | ad_result |   rawVal    |
    +---------------------------+-----------+-------------+
    | 2022-04-12T06:00:00+08:00 | null      | 923091.3175 |
    | 2022-04-11T08:00:00+08:00 | null      | 8035700     |
    | 2022-04-11T09:00:00+08:00 | null      | 8035690.25  |
    | 2022-04-11T10:00:00+08:00 | null      | 3306277.545 |
    | 2022-04-11T11:00:00+08:00 | null      | 5921167.787 |
    | 2022-04-11T12:00:00+08:00 | null      | 833541.304  |
    +---------------------------+-----------+-------------+
  • 例 5: ステートメントでネストされた非ダウンサンプリング演算子 LATEST を使用し、ダウンサンプリング間隔を 0 として指定します。

    SELECT time, anomaly_detect(latest(temperature), 'esd') AS ad_result, latest(temperature) AS latestVal FROM sensor SAMPLE BY 0;

    次の結果が返されます。

    +---------------------------+-----------+-------------+
    |           time            | ad_result |  latestVal  |
    +---------------------------+-----------+-------------+
    | 2022-04-12T06:00:00+08:00 | false     | 923091.3175 |
    | 2022-04-13T07:00:00+08:00 | false     | 8037506.75  |
    | 2022-04-13T07:00:00+08:00 | false     | 50490.2     |
    +---------------------------+-----------+-------------+