Partilhar via


series_fir()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Aplica um filtro FIR (Resposta ao Impulso Finito) em uma série.

A função recebe uma expressão contendo uma matriz numérica dinâmica como entrada e aplica um filtro de Resposta ao Impulso Finito. Ao especificar os filter coeficientes, ele pode ser usado para calcular uma média móvel, suavização, detecção de alterações e muitos outros casos de uso. A função usa a coluna que contém a matriz dinâmica e uma matriz dinâmica estática dos coeficientes do filtro como entrada e aplica o filtro na coluna. Ela resulta em uma nova coluna de matriz dinâmica que contém a saída filtrada.

Sintaxe

series_fir(filtro de série, [, normalize[, centro]])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
série dynamic ✔️ Uma matriz de valores numéricos.
filter dynamic ✔️ Uma matriz de valores numéricos que contém os coeficientes do filtro.
normalize bool Indica se o filtro deve ser normalizado. Ou seja, dividido pela soma dos coeficientes. Se o filtro contiver valores negativos, normalize deverá ser especificado como false, caso contrário, o resultado será null. Se não for especificado, um valor padrão de será assumido true , dependendo da presença de valores negativos no filtro. Se filter contiver pelo menos um valor negativo, normalize será considerado false.
centro bool Indica se o filtro é aplicado simetricamente em uma janela de tempo antes e depois do ponto atual ou em uma janela de tempo do ponto atual para trás. Por padrão, center é false, que se encaixa no cenário de streaming de dados para que possamos aplicar o filtro apenas nos pontos atuais e mais antigos. No entanto, para processamento ad-hoc, você pode configurá-lo como true, mantendo-o sincronizado com a série temporal. Confira os exemplos abaixo. Este parâmetro controla o atraso do grupo do filtro.

Dica

A normalização é uma maneira conveniente de garantir que a soma dos coeficientes seja 1. Quando normalizado é true, o filtro não amplifica ou atenua a série. Por exemplo, a média móvel de quatro compartimentos pode ser especificada por filter=[1,1,1,1] e normalizadatrue=, o que é mais simples do que digitar [0,25,0,25.0.25,0,25].

Devoluções

Uma nova coluna de matriz dinâmica contendo a saída filtrada.

Exemplos

  • Calcule uma média móvel de cinco pontos definindo filter=[1,1,1,1,1] e normalizetrue= (padrão). Observe o efeito de center=false (padrão) vs. 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

A consulta retorna:
5h_MovingAvg: Filtro de média móvel de cinco pontos. O pico é suavizado e seu pico é deslocado em (5-1)/2 = 2h.
5h_MovingAvg_centered: Mesmo, mas ao definir center=true, o pico permanece em seu local original.

Série abeto.

  • Para calcular a diferença entre um ponto e o anterior, defina 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 abeto 2.