series_fir()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Stosuje filtr Finite Impulse Response (FIR) w serii.
Funkcja przyjmuje wyrażenie zawierające dynamiczną tablicę liczbową jako dane wejściowe i stosuje filtr Finite Impulse Response . Określając filter
współczynniki, można go użyć do obliczania średniej ruchomej, wygładzenia, wykrywania zmian i wielu innych przypadków użycia. Funkcja przyjmuje kolumnę zawierającą tablicę dynamiczną i statyczną tablicę dynamiczną współczynników filtru jako dane wejściowe i stosuje filtr w kolumnie. Zwraca nową kolumnę tablicy dynamicznej zawierającą odfiltrowane dane wyjściowe.
Składnia
series_fir(
filtr serii,
[,
normalize[,
center]])
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
seria | dynamic |
✔️ | Tablica wartości liczbowych. |
filter | dynamic |
✔️ | Tablica wartości liczbowych zawierająca współczynniki filtru. |
normalizować | bool |
Wskazuje, czy filtr powinien być znormalizowany. Oznacza to, że dzieli się sumą współczynników. Jeśli filtr zawiera wartości ujemne, normalizacja musi zostać określona jako false , w przeciwnym razie wynik będzie .null Jeśli nie zostanie określona, przyjmuje się wartość true domyślną, w zależności od obecności wartości ujemnych w filtrze. Jeśli filtr zawiera co najmniej jedną wartość ujemną, przyjmuje się, że wartość normalizowania to false . |
|
centrum | bool |
Wskazuje, czy filtr jest stosowany symetrycznie w przedziale czasu przed i po bieżącym punkcie, czy w przedziale czasu z bieżącego punktu wstecz. Domyślnie środek to false , który pasuje do scenariusza danych przesyłanych strumieniowo, dzięki czemu możemy zastosować filtr tylko dla bieżących i starszych punktów. Jednak w przypadku przetwarzania ad hoc można ustawić go na true , zachowując synchronizację z szeregami czasowymi. Zobacz przykłady poniżej. Ten parametr steruje opóźnieniem grupy filtru. |
Napiwek
Normalizacja jest wygodnym sposobem upewnienia się, że suma współczynników wynosi 1. Gdy znormalizowana wartość to true
, filtr nie wzmacnia ani nie tłumi serii. Na przykład średnia ruchoma czterech pojemników może być określona przez filtr=[1,1,1,1] i znormalizowany=true
, co jest prostsze niż wpisywanie [0.25,0.25.0.25,0,25].0.25].
Zwraca
Nowa kolumna tablicy dynamicznej zawierająca przefiltrowane dane wyjściowe.
Przykłady
- Oblicz średnią ruchomą pięciu punktów, ustawiając wartość filter=[1,1,1,1,1] i normalizuj=
true
(wartość domyślna). Zwróć uwagę na efekt środka=false
(wartość domyślna) atrue
:
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
To zapytanie zwraca:
5h_MovingAvg: Filtr średniej ruchomej pięciu punktów. Skok jest wygładzony i jego szczyt przesunięty o (5-1)/2 = 2h.
5h_MovingAvg_centered: to samo, ale ustawiając center=true
wartość , szczyt pozostaje w oryginalnej lokalizacji.
- Aby obliczyć różnicę między punktem a poprzednim, ustaw wartość 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