series_fir()
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
系列に有限インパルス応答 (FIR) フィルターを適用します。
この関数は、入力として動的数値配列を含む式を受け取り、無限インパルス応答フィルターを適用します。 filter
係数を指定することによって、移動平均の計算、平滑化、変更検出などのさまざまなユース ケースに使用できます。 この関数は、入力としてフィルターの係数の動的配列と静的配列を含む列を受け取り、列にフィルターを適用します。 フィルター処理された出力を含む、動的配列の新しい列が出力されます。
構文
series_fir(
series,
filter [,
正規化[,
center]])
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
系列 | dynamic |
✔️ | 数値の配列。 |
フィルター | dynamic |
✔️ | フィルターの係数を含む数値の配列。 |
normalize | bool |
フィルターを正規化するかどうかを示します。 つまり、係数の合計で除算されます。 フィルターに負の値が含まれている場合は、normalize を false として指定する必要があります。そうでない場合は、結果が null になります。 指定しない場合、filterに負の値が存在するかどうかに応じて、既定値の true が想定されます。 filter に少なくとも 1 つの負の値が含まれている場合は、normalize が false と見なされます。 |
|
center | bool |
フィルターを現在のポイントの前後の時間枠に対称的に適用するか、または現在のポイントから逆方向の時間枠に適用するかを示します。 既定では、中央は false であり、現在のポイントと古いポイントにのみフィルターを適用できるように、ストリーミング データのシナリオに適合します。 ただし、アドホック処理の場合は、それを true に設定して、時系列との同期を維持することができます。 以下の例を参照してください。 このパラメーターは、フィルターのグループ遅延を制御します。 |
ヒント
正規化は、係数の合計が 1 であることを確認するための便利な方法です。 正規化がtrue
されると、フィルターは系列を増幅または減衰しません。 たとえば、4 つのビンの移動平均は、 filter=[1,1,1,1,1]、 正規化=true
で指定できます。これは、「0.25,0.25.0.25,0.25]」と入力するよりも簡単です。
返品
フィルター処理された出力を含む新しい動的配列列。
例
- filter=[1,1,1,1,1] と normalize=
true
(既定値) を設定することで、5 つのポイントの移動平均を計算します。 center=false
(既定値) の場合とtrue
の場合の影響に注意してください。
range t from bin(now(), 1h) - 23h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project
id='TS',
val=dynamic([0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 40, 100, 40, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0]),
t
| extend
5h_MovingAvg=series_fir(val, dynamic([1, 1, 1, 1, 1])),
5h_MovingAvg_centered=series_fir(val, dynamic([1, 1, 1, 1, 1]), true, true)
| render timechart
このクエリは次の結果を返します。
5h_MovingAvg: 5 つのポイントの移動平均フィルター。 スパイクを平滑化し、ピークを (5-1)/2 = 2h ずらします。
5h_MovingAvg_centered: 同じですが、center=true
を設定することによって、ピークが元の場所に留まります。
- あるポイントとその前のポイントの差を計算するには、filter=[1,-1] を設定します。
range t from bin(now(), 1h) - 11h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project id='TS', t, value=dynamic([0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3])
| extend diff=series_fir(value, dynamic([1, -1]), false, false)
| render timechart