Udostępnij za pośrednictwem


series_fir()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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) 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 ustawiając center=truewartość , szczyt pozostaje w oryginalnej lokalizacji.

Seria jodła.

  • 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

Seria jodła 2.