次の方法で共有


series_periods_detect()

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

時系列内の最も重要な期間を検索します。

series_periods_detect() 関数は、毎日、毎週、毎月のサイクルなど、データ内の定期的なパターンを検出するのに役立ちます。

構文

series_periods_detect( series,min_period,max_period,num_periods)

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
系列 dynamic ✔️ 数値の配列。通常は、 make シリーズ または make_list 演算子の結果の出力です。
min_period real ✔️ 検索対象の最小期間の長さ。
max_period real ✔️ 検索する最大期間の長さ。
num_periods long ✔️ 返される期間の最大数。 この数値は、出力動的配列の長さです。

重要

  • このアルゴリズムでは、少なくとも 4 つのポイントと、系列の長さの最大で半分とを含む期間を検出できます。
  • min_periodを少し下に設定し、時系列で見つかると予想される期間の少し上にmax_periodします。 たとえば、1 時間ごとに集計された信号があって、日単位と週単位の両方の期間 (それぞれ、24 時間と 168 時間) を探す場合、min_period=0.8*24, max_period=1.2*168 を設定し、これらの期間の前後に 20% のマージンを残すことができます。
  • 入力時系列は規則的でなければなりません。 つまり、定数ビンに集約されるということです。このことは、make-series を使用して作成された場合は、常に当てはまります。 そうでない場合、出力は意味のないものになります。

返品

この関数は、次の 2 つの列を持つテーブルを返します。

  • 期間: 検出された期間を含む動的配列 (ビン サイズの単位で、スコア順)。
  • scores: 0 から 1 までの値を含む動的配列。 各配列では、period 配列のそれぞれの位置にある期間の重要度を測定します。

次のクエリでは、アプリケーション トラフィックのスナップショットを 1 か月間埋め込みます。 トラフィックの量は 1 日に 2 回集計されます。つまり、ビン サイズは 12 時間です。 このクエリでは、データ内のパターンを明確に示す折れ線グラフが生成されます。

print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y  
| render linechart

系列期間。

同じ系列で series_periods_detect() 関数を実行して、定期的なパターンを識別できます。 この関数は、指定した期間範囲内のパターンを検索し、2 つの値を返します。 最初の値は、検出されたパターンの長さが 14 ポイントで、スコアが約 .84 であることを示します。 もう 1 つの値は、追加のパターンが見つからなかったことを示す 0 です。

print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y  
| project series_periods_detect(y, 0.0, 50.0, 2)

出力

series_periods_detect_y_periods series_periods_detect_y_periods_scores
[14, 0] [0.84, 0]

series_periods_detect_y_periods_scoresの値は切り捨てられます。

Note

グラフには日次パターンも表示されますが、サンプリングが粗すぎる (12 時間のビン サイズ) ため、これはクエリによって返されません。 1 日 2 ビンの期間が、アルゴリズムで必要とされる最小期間サイズの 4 ポイントを下回っています。