Partager via


series_fir()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 truesur , 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 truenormalisé, 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 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éfinissantcenter=true, le pic reste dans son emplacement d’origine.

Fir série.

  • 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

Série fir 2.