series_fir()

Applique un filtre FIR (Finite Impulse Response) sur une série.

La fonction prend une expression contenant un tableau numérique dynamique en tant qu’entrée et applique un filtre de réponse impulsionnelle finie . En spécifiant les filter coefficients, il peut être utilisé pour calculer une moyenne mobile, le lissage, la 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, puis applique le filtre sur la colonne. Elle génère une nouvelle colonne de tableau dynamique, qui contient la sortie filtrée.

Syntax

series_fir(Série,filter [,normalize[,center]])

Découvrez les conventions de syntaxe.

Paramètres

Nom Type Obligatoire 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, normalize doit être spécifié comme false, sinon le résultat sera null. Si elle n’est pas spécifiée, une valeur par défaut est supposée, en fonction de true la présence de valeurs négatives dans le filtre. Si le filtre contient au moins une valeur négative, normalize est supposé être false.
centre bool Indique si le filtre est appliqué symétriquement 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, center est false, qui correspond au scénario de diffusion en continu des données afin que nous puissions appliquer le filtre uniquement sur les points actuels et plus anciens. Toutefois, pour le traitement ad hoc, vous pouvez le définir sur true, en le maintenant synchronisé avec la série chronologique. Voir 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. Lorsque normalisé a la valeur true, le filtre n’amplifie pas ou n’atténue pas la série. Par exemple, la moyenne mobile de quatre compartiments 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].

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 centre=false (par défaut) par rapport 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

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éfinissant center=true, le pic reste à son emplacement d’origine.

Sapin de série.

  • Pour calculer la différence entre un point et son point 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

Série sar 2.