series_fir()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 normalize
true
= (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.
- 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