series_fir()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
在數列上套用有限脈衝回應 (FIR) 篩選器。
函式會接受包含動態數值數位的表達式作為輸入,並套用 有限脈衝響應 篩選條件。 藉由指定 filter
係數,它可用於計算移動平均、平滑、變更偵測,以及更多使用案例。 函式會採用包含動態數位的數據行和篩選係數的靜態動態數位做為輸入,並在數據行上套用篩選。 它會輸出新的動態數位數據行,其中包含篩選的輸出。
語法
series_fir(
數列,
篩選 [ ,
normalize[,
center]])
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
系列 | dynamic |
✔️ | 數值的陣列。 |
filter | dynamic |
✔️ | 包含篩選係數的數值陣列。 |
normalize | bool |
指出是否應該正規化篩選。 也就是說,除以係數的總和。 如果篩選包含負值,則必須 將正規化 指定為 false ,否則結果會是 null 。 如果未指定,則會假設的預設值true ,視篩選中是否有負值而定。 如果 篩選 至少包含一個負值,則會 假設正規化 為 false 。 |
|
center | bool |
指出篩選是對稱套用在目前點前後的時間範圍,還是從目前點向後套用的時間範圍。 根據預設,center 是 false ,其符合串流數據的案例,因此我們只能對目前和較舊的點套用篩選。 不過,若要進行臨機操作處理,您可以將它設定為 true ,使其與時間序列保持同步。 請參閱以下的範例。 此參數會控制篩選的 群組延遲。 |
提示
正規化是確保係數總和為1的便利方式。 標準化為 true
時,篩選條件不會放大或衰減數列。 例如,可以使用 filter=[1,1,1,1,1] 和標準化=true
來指定四個間隔的移動平均,這比輸入 [0.25,0.25.0.25,0.25] 更簡單。
傳回
包含篩選輸出的新動態數位數據行。
範例
- 藉由設定 filter=[1,1,1,1,1,1] 和正規化
true
=來計算五點的移動平均(預設值)。 請注意中心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-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