series_fir()

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ładzania, 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(Serii,filter [,normalize[,center]])

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Serii dynamic ✔️ Tablica wartości liczbowych.
Filtr dynamic ✔️ Tablica wartości liczbowych zawierających współczynniki filtru.
Normalizacji bool Wskazuje, czy filtr powinien być znormalizowany. Oznacza to, że jest podzielona przez sumę współczynników. Jeśli filtr zawiera wartości ujemne , normalizacja musi być określona jako false, w przeciwnym razie wynikiem będzie null. Jeśli nie zostanie określona, przyjmuje się, że 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 normalizacja ma wartość false.
Centrum bool Wskazuje, czy filtr jest stosowany symetrycznie w przedziale czasu przed bieżącym punktem lub w przedziale czasu z bieżącego punktu do tyłu. Domyślnie środek to false, który pasuje do scenariusza przesyłania strumieniowego danych, dzięki czemu możemy zastosować filtr tylko do 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 poniższe przykłady. Ten parametr steruje opóźnieniem grupy filtru.

Porada

Normalizacja jest wygodnym sposobem upewnienia się, że suma współczynników wynosi 1. Gdy znormalizowana wartość to true, filtr nie wzmacnia ani nie osłabia serii. Na przykład średnia ruchoma czterech przedziałów może być określona przez filtr =[1,1,1,1] i znormalizowana=true, co jest prostsze niż wpisywanie [0,25,0,25.0.25,0,25].

Zwraca

Nowa kolumna tablicy dynamicznej zawierająca odfiltrowane dane wyjściowe.

Przykłady

  • Oblicz średnią ruchomą pięciu punktów, ustawiając wartość filter=[1,1,1,1] i normalizuj=true (wartość domyślna). Zwróć uwagę na efekt środka=false (wartość domyślna) 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

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 przez ustawienie center=true, szczyt pozostaje w pierwotnej lokalizacji.

Jodła serii.

  • Aby obliczyć różnicę między punktem a poprzednim, ustaw filtr =[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

Seria jodła 2.