series_fir()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Applique un filtre FIR (Fine Impulse Response) sur une série.
La fonction prend une expression contenant un tableau numérique dynamique comme entrée et applique un filtre de réponse à impulsion finie. En spécifiant les filter
coefficients, il peut être utilisé pour calculer une moyenne mobile, un lissage, une détection des modifications et bien d’autres cas d’usage. La fonction prend la colonne contenant le tableau dynamique et un tableau dynamique statique des coefficients du filtre comme entrée et applique le filtre sur la colonne. Elle génère une nouvelle colonne de tableau dynamique, qui contient la sortie filtrée.
Syntaxe
series_fir(
filtre série,
[,
normalize[,
center]])
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
série | dynamic |
✔️ | Tableau de valeurs numériques. |
filter | dynamic |
✔️ | Tableau de valeurs numériques contenant les coefficients du filtre. |
normalize | bool |
Indique si le filtre doit être normalisé. Autrement dit, divisé par la somme des coefficients. Si le filtre contient des valeurs négatives, la normalisation doit être spécifiée comme false , sinon le résultat sera null . Si elle n’est pas spécifiée, une valeur true par défaut est supposée, en fonction de la présence de valeurs négatives dans le filtre. Si le filtre contient au moins une valeur négative, la normalisation est supposée être false . |
|
centre | bool |
Indique si le filtre est appliqué symétriement sur une fenêtre de temps avant et après le point actuel, ou sur une fenêtre de temps à partir du point actuel vers l’arrière. Par défaut, le centre est false , qui correspond au scénario de données de diffusion en continu afin que nous puissions uniquement appliquer le filtre sur les points actuels et anciens. Toutefois, pour le traitement ad hoc, vous pouvez le définir true sur , en le conservant synchronisé avec la série chronologique. Consultez les exemples ci-dessous. Ce paramètre contrôle le délai de groupe du filtre. |
Conseil
La normalisation est un moyen pratique de s’assurer que la somme des coefficients est 1. Lorsqu’il est true
normalisé, le filtre n’augmente pas ou n’atténue pas la série. Par exemple, la moyenne mobile de quatre bacs peut être spécifiée par filter=[1,1,1,1] et normalisée=true
, ce qui est plus simple que de taper [0,25,0,25.0.25,0,25,0,25].
Retours
Nouvelle colonne de tableau dynamique contenant la sortie filtrée.
Exemples
- Calculez une moyenne mobile de cinq points en définissant filter=[1,1,1,1,1] et normalisez=
true
(valeur par défaut). Notez l’effet du centrefalse
= (par défaut) par rapporttrue
à :
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
Cette requête renvoie :
5h_MovingAvg : Filtre de moyenne mobile de cinq points. Le pic est lissé et son point culminant est déplacé de (5-1)/2 = 2 h.
5h_MovingAvg_centered : Identique, mais en définissantcenter=true
, le pic reste dans son emplacement d’origine.
- Pour calculer la différence entre un point et son précédent, définissez 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