このトピックでは、時系列データの変化点を検出するために使用できる変化点検出関数について説明します。
変化点検出関数は、次の変化点を検出できます。
指定された期間内の統計的フィーチャの変化
時系列データの異常
機能一覧
関数 | 説明 |
時系列データから異なる統計的特徴を持つ間隔を検出します。 間隔のエンドポイントは変化点です。 | |
時系列データから統計が急激に増減する時点を検出します。 |
ts_cp_detect
関数の形式:
適切なタイムウィンドウの長さを指定できない場合は、次の関数を使用できます。 検出関数で使用されるデフォルトのウィンドウ長は10です。
select ts_cp_detect(x, y, samplePeriod)
ビジネス環境に固有の効果をデバッグするには、次の関数でminSizeパラメーターを指定します。
select ts_cp_detect(x, y, minSize)
関数形式のパラメーターを次の表に示します。
パラメーター | 説明 | 値 |
x | タイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。 | 各時点はUnixタイムスタンプです。 単位は秒です。 |
y | 指定された各時点に対応する数値データのシーケンス。 | 非該当 |
minSize | 連続した間隔内の時系列データの最小長さ。 | 最小の長さは3です。 最大長は、指定した時系列データの長さの10分の1を超えることはできません。 |
例:
クエリステートメントは次のとおりです。
* | 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 | タイムシーケンス。 時間内のポイントは、横軸に沿って昇順にソートされます。 | 各時点はUnixタイムスタンプです。 単位は秒です。 |
y | 指定された各時点に対応する数値データのシーケンス。 | 非該当 |
winSize | 連続した間隔内の時系列データの最小長さ。 | 最小の長さは3です。 最大長は、指定した時系列データの長さの10分の1を超えることはできません。 |
例:
クエリステートメントは次のとおりです。
* | 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] |