series_fir()
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Aplica un filtro finito de respuesta de impulso (FIR) en una serie.
La función toma una expresión que contiene una matriz numérica dinámica como entrada y aplica un filtro Finite Impulse Response . Al especificar los filter
coeficientes, se puede usar para calcular una media móvil, suavizar, detectar cambios y muchos más casos de uso. La función toma la columna que contiene la matriz dinámica y una matriz dinámica estática de los coeficientes del filtro como entrada y aplica el filtro en la columna. De este modo, genera una columna de matriz dinámica que contiene el resultado filtrado.
Sintaxis
series_fir(
filtro de series,
[ ,
normalize[,
center]])
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
serie | dynamic |
✔️ | Matriz de valores numéricos. |
filter | dynamic |
✔️ | Matriz de valores numéricos que contiene los coeficientes del filtro. |
normalize | bool |
Indica si se debe normalizar el filtro. Es decir, dividido por la suma de los coeficientes. Si el filtro contiene valores negativos, se debe especificar normalizar como false , de lo contrario, el resultado será null . Si no se especifica, se asume un valor predeterminado de true , en función de la presencia de valores negativos en el filtro. Si el filtro contiene al menos un valor negativo, se supone que normalizar es false . |
|
centro | bool |
Indica si el filtro se aplica simétricamente en un período de tiempo antes y después del punto actual, o en un período de tiempo desde el punto actual hacia atrás. De forma predeterminada, center es false , que se ajusta al escenario de datos de streaming para que solo podamos aplicar el filtro en los puntos actuales y más antiguos. Sin embargo, para el procesamiento ad hoc puede establecerlo true en , manteniendo sincronizado con la serie temporal. Consulte los ejemplos siguientes. Este parámetro controla el retraso del grupo del filtro. |
Sugerencia
La normalización es una manera cómoda de asegurarse de que la suma de los coeficientes es 1. Cuando se normaliza es true
, el filtro no amplifica ni atenua la serie. Por ejemplo, el promedio móvil de cuatro cubos podría especificarse mediante filter=[1,1,1,1] y normalizado=true
, que es más sencillo que escribir [0,25,0,25.0.25,0,0,25].
Devoluciones
Nueva columna de matriz dinámica que contiene la salida filtrada.
Ejemplos
- Calcule una media móvil de cinco puntos estableciendo filter=[1,1,1,1,1] y normalizar
true
= (valor predeterminado). Observe el efecto del centro=false
(valor predeterminado) frente a :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 devuelve lo siguiente:
5h_MovingAvg: filtro de media móvil de cinco puntos. Se suaviza la punta y su pico se desplaza en (5-1)/2 = 2 h.
5h_MovingAvg_centered: Igual, pero estableciendo center=true
, el pico permanece en su ubicación original.
- Para calcular la diferencia entre un punto y su anterior, establezca 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