series_fir()

Aplica um filtro De Resposta por Impulso Finito (FIR) numa série.

A função utiliza uma expressão que contém uma matriz numérica dinâmica como entrada e aplica um filtro De Resposta por Impulso Finito . Ao especificar os filter coeficientes, pode ser utilizado para calcular uma média móvel, suavização, deteção de alterações e muitos mais casos de utilização. A função utiliza 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. Produz uma nova coluna de matriz dinâmica, que contém a saída filtrada.

Syntax

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
série dynamic ✔️ Uma matriz de valores numéricos.
filtrar dynamic ✔️ Uma matriz de valores numéricos que contêm os coeficientes do filtro.
normalizar bool Indica se o filtro deve ser normalizado. Ou seja, dividido pela soma dos coeficientes. Se o filtro contiver valores negativos, a normalização tem de ser especificada como false, caso contrário, o resultado será null. Se não for especificado, assume-se um valor predefinido de true , consoante a presença de valores negativos no filtro. Se o filtro contiver pelo menos um valor negativo, assume-sefalseque a normalização é .
centro bool Indica se o filtro é aplicado simetricamente numa janela de tempo antes e depois do ponto atual ou numa janela de tempo do ponto atual para trás. Por predefinição, o centro é false, que se adequa ao cenário de transmissão em fluxo de dados para que só possamos aplicar o filtro nos pontos atuais e mais antigos. No entanto, para o processamento ad-hoc, pode defini-lo como true, mantendo-o sincronizado com a série temporal. Veja os exemplos abaixo. Este parâmetro controla o atraso do grupo do filtro.

Dica

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

Devoluções

Uma nova coluna de matriz dinâmica que contém a saída filtrada.

Exemplos

  • Calcular uma média móvel de cinco pontos ao definir filter=[1,1,1,1,1] e normalizar=true (predefinição). Tenha em atenção o efeito do centro=false (predefiniçã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

Esta consulta devolve:
5h_MovingAvg: Filtro médio móvel de cinco pontos. O pico é suavado e o seu pico foi deslocado por (5-1)/2 = 2h.
5h_MovingAvg_centered: o mesmo, mas ao definir center=true, o pico permanece na localização original.

Abeto da série.

  • 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

Abeto da série 2.