series_fir()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Applica un filtro FIR (Finite Impulse Response) su una serie.
La funzione accetta un'espressione contenente una matrice numerica dinamica come input e applica un filtro Di risposta impulso finito. Specificando i filter
coefficienti, può essere usato per calcolare una media mobile, un smoothing, un rilevamento delle modifiche e molti altri casi d'uso. La funzione accetta la colonna contenente la matrice dinamica e una matrice dinamica statica dei coefficienti del filtro come input e applica il filtro sulla colonna. Restituisce una nuova colonna di matrice dinamica, che contiene l'output filtrato.
Sintassi
series_fir(
filtro serie ,
[,
normalize[,
center]])
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
serie | dynamic |
✔️ | Matrice di valori numerici. |
filter | dynamic |
✔️ | Matrice di valori numerici contenente i coefficienti del filtro. |
normalizzare | bool |
Indica se il filtro deve essere normalizzato. Ovvero, diviso per la somma dei coefficienti. Se il filtro contiene valori negativi, è necessario specificare normalize come false . In caso contrario, il risultato sarà null . Se non specificato, si presuppone un valore predefinito di true , a seconda della presenza di valori negativi nel filtro. Se il filtro contiene almeno un valore negativo, si presuppone che normalize sia false . |
|
centro | bool |
Indica se il filtro viene applicato simmetricamente in un intervallo di tempo prima e dopo il punto corrente o in un intervallo di tempo dal punto corrente all'indietro. Per impostazione predefinita, center è false , che si adatta allo scenario dei dati di streaming in modo che sia possibile applicare il filtro solo ai punti correnti e precedenti. Tuttavia, per l'elaborazione ad hoc è possibile impostarla su true , mantenendola sincronizzata con la serie temporale. Vedere gli esempi seguenti. Questo parametro controlla il ritardo del gruppo del filtro. |
Suggerimento
La normalizzazione è un modo pratico per assicurarsi che la somma dei coefficienti sia 1. Quando normalizzato è true
, il filtro non amplifica o attenua la serie. Ad esempio, la media mobile di quattro contenitori può essere specificata da filter=[1,1,1,1] e normalizzata=true
, più semplice di digitare [0,25,0,25,0,25,0,25,0,25].
Valori restituiti
Nuova colonna di matrice dinamica contenente l'output filtrato.
Esempi
- Calcolare una media mobile di cinque punti impostando filter=[1,1,1,1,1] e normalizzare
true
= (impostazione predefinita). Si noti l'effetto del centrofalse
= (impostazione predefinita) e :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
Questa query restituisce:
5h_MovingAvg: cinque punti di filtro medio mobile. Il picco viene smussato e il massimo viene spostato di (5-1)/2 = 2h.
5h_MovingAvg_centered: uguale, ma impostando center=true
, il picco rimane nella posizione originale.
- Per calcolare la differenza tra un punto e quello precedente, impostare 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