5 Funkcje trendów

Funkcje trendów, w przeciwieństwie do funkcji historii, używają danych z trendów do obliczeń.

Trendy przechowują godzinowe wartości zagregowane. Funkcje trendów używają tych godzinowych średnich, co sprawia, że są one przydatne do analizy długoterminowej.

Wyniki funkcji trendów są buforowane, więc wielokrotne wywołania tej samej funkcji z tymi samymi parametrami pobierają informacje z bazy danych tylko raz. Bufor funkcji trendów jest kontrolowany przez parametr serwera TrendFunctionCacheSize.

Wyzwalacze, które odwołują się tylko do funkcji trendów, są analizowane raz na najmniejszy okres czasu w wyrażeniu. Na przykład wyzwalacz taki jak:

trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2

będzie oceniany raz dziennie. Jeśli wyzwalacz zawiera zarówno funkcje trendów, jak i historii (lub oparte na czasie), jest obliczany zgodnie z zwykłymi zasadami.

Wszystkie funkcje wymienione tutaj są obsługiwane w:

Kilka ogólnych uwag na temat parametrów funkcji:

  • Parametry funkcji są rozdzielane przecinkiem
  • Opcjonalne parametry funkcji (lub części parametrów) są oznaczone przez < >
  • Parametry specyficzne dla funkcji są opisane przy każdej funkcji
  • Parametry /host/key oraz time period:time shift nigdy nie mogą być cytowane
Wspólne parametry
  • /host/key to wspólny obowiązkowy pierwszy parametr
  • time period:time shift to wspólny drugi parametr, gdzie:
    • time period - okres czasu (minimum '1h'), zdefiniowany jako <N><time unit> gdzie N - liczba jednostek czasu, time unit - h (godzina), d (dzień), w (tydzień), M (miesiąc) or y (rok).
    • time shift - przesunięcie czasowe okresu czasu (patrz przykłady funkcji)

Funkcje trendów

FUNKCJA
Opis Parametry specyficzne dla funkcji Komentarze
baselinedev (/host/key,data period:time shift,season_unit,num_seasons)
Zwraca liczbę odchyleń standardowych (według algorytmu stddevpop) między ostatnim okresem danych a tymi samymi okresami danych w poprzednich sezonach. data period - okres zbierania danych w sezonie, zdefiniowany jako <N><jednostka czasu> gdzie
N - liczba jednostek czasu
jednostka czasu - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok), musi być równa lub mniejsza niż sezon

Time shift - przesunięcie okresu czasu (patrz przykłady)

season_unit - długość jednego sezonu (h, d, w, M, y), nie może być mniejsza niż okres danych

num_seasons - liczba sezonów do oceny
Przykłady:
=> baselinedev(/host/key,1d:now/d,"M",6) → obliczanie liczby odchyleń standardowych (populacji) między poprzednim dniem a tym samym dniem w poprzednich 6 miesiącach. Jeśli data nie istnieje w poprzednim miesiącu, użyty zostanie ostatni dzień miesiąca (31 lipca będzie analizowany względem 31 stycznia, 28 lutego,... 30 czerwca).
=> baselinedev(/host/key,1h:now/h,"d",10) → obliczanie liczby odchyleń standardowych (populacji) między poprzednią godziną a tymi samymi godzinami w okresie dziesięciu dni przedwczoraj.
baselinewma (/host/key,data period:time shift,season_unit,num_seasons)
Oblicza wartość bazową poprzez uśrednianie danych z tego samego przedziału czasowego w wielu równych okresach czasu ('sezony') przy użyciu algorytmu ważonej średniej ruchomej. data period - okres zbierania danych w sezonie, zdefiniowany jako <N><jednostka czasu> gdzie
N - liczba jednostek czasu
jednostka czasu - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok), musi być równa lub mniejsza niż sezon

Time shift - przesunięcie okresu czasu, określa koniec okresu zbierania danych w sezonach (patrz przykłady)

season_unit - długość jednego sezonu (h, d, w, M, y), nie może być mniejsza niż okres danych

num_seasons - liczba sezonów do oceny
Przykłady:
=> baselinewma(/host/key,1h:now/h,"d",3) → obliczanie wartości bazowej na podstawie ostatniej pełnej godziny w okresie 3-dniowym, który zakończył się wczoraj. Jeśli "teraz" jest poniedziałkiem o 13:30, dane dla 12:00-12:59 w piątek, sobotę i niedzielę zostaną przeanalizowane.
=> baselinewma(/host/key,2h:now/h,"d",3) → obliczanie wartości bazowej na podstawie ostatnich dwóch godzin w okresie 3-dniowym, który zakończył się wczoraj. Jeśli "teraz" jest poniedziałkiem o 13:30, dane dla 11:00-12:59 w piątek, sobotę i niedzielę zostaną przeanalizowane.
=> baselinewma(/host/key,1d:now/d,"M",4) → obliczanie wartości bazowej na podstawie tego samego dnia miesiąca jak 'wczoraj' w ciągu 4 miesięcy poprzedzających ostatni pełny miesiąc. Jeśli wymagana data nie istnieje, przyjmuje się ostatni dzień miesiąca. Jeśli dzisiaj jest 1 września, dane dla 31 lipca, 30 czerwca, 31 maja, 30 kwietnia zostaną przeanalizowane.
trendavg (/host/key,time period:time shift)
Średnia wartości trendów w zdefiniowanym okresie czasu. Zobacz wspólne parametry. Przykłady:
=> trendavg(/host/key,1h:now/h) → średnia z poprzedniej godziny (np. 12:00-13:00)
=> trendavg(/host/key,1h:now/h-1h) → średnia z dwóch godzin temu (11:00-12:00)
=> trendavg(/host/key,1h:now/h-2h) → średnia z trzech godzin temu (10:00-11:00)
=> trendavg(/host/key,1M:now/M-1y) → średnia z poprzedniego miesiąca rok temu
trendcount (/host/key,time period:time shift)
Ilość pomyślnie pobranych wartości trendów w zdefiniowanym okresie czasu. Zobacz wspólne parametry. Przykłady:
=> trendcount(/host/key,1h:now/h) → ilość z poprzedniej godziny (np. 12:00-13:00)
=> trendcount(/host/key,1h:now/h-1h) → ilość z dwóch godzin temu (11:00-12:00)
=> trendcount(/host/key,1h:now/h-2h) → ilość z trzech godzin temu (10:00-11:00)
=> trendcount(/host/key,1M:now/M-1y) → ilość z poprzedniego miesiąca rok temu
trendmax (/host/key,time period:time shift)
Maksimum wartości trendów w zdefiniowanym okresie czasu. Zobacz wspólne parametry. Przykłady:
=> trendmax(/host/key,1h:now/h) → maksimum z poprzedniej godziny (np. 12:00-13:00)
=> trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → oblicz różnicę między maksymalną a minimalną wartością (różnica trendu) z poprzedniej godziny (12:00-13:00)
=> trendmax(/host/key,1h:now/h-1h) → maksimum z dwóch godzin temu (11:00-12:00)
=> trendmax(/host/key,1h:now/h-2h) → maksimum z trzech godzin temu (10:00-11:00)
=> trendmax(/host/key,1M:now/M-1y) → maksimum z poprzedniego miesiąca rok temu
trendmin (/host/key,time period:time shift)
Minimum wartości trendów w zdefiniowanym okresie czasu. Zobacz wspólne parametry. Przykłady:
=> trendmin(/host/key,1h:now/h) → minimum z poprzedniej godziny (np. 12:00-13:00)
=> trendmin(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → oblicz różnicę między maksymalną a minimalną wartością (różnica trendu) z poprzedniej godziny (12:00-13:00)
=> trendmin(/host/key,1h:now/h-1h) → minimum z dwóch godzin temu (11:00-12:00)
=> trendmin(/host/key,1h:now/h-2h) → minimum z trzech godzin temu (10:00-11:00)
=> trendmin(/host/key,1M:now/M-1y) → minimum z poprzedniego miesiąca rok temu
trendstl (/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s_window>)
Zwraca współczynnik anomalii podczas okresu wykrywania - wartość dziesiętna między 0 a 1, która jest liczona jako ((liczba wartości anomalii)/(łączna liczba wartości)). eval period - okres czasu, który musi zostać rozłożony (minimum '1h'), zdefiniowany jako <N><jednostka czasu> gdzie
N - liczba jednostek czasu
jednostka czasu - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok).

Time shift - przesunięcie okresu czasu (patrz przykłady)

detection period - okres czasu przed zakończeniem eval period, dla którego obliczane są anomalie (minimum '1h', nie może być dłuższy niż eval period), zdefiniowany jako <N><jednostka czasu> gdzie
N - liczba jednostek czasu
jednostka czasu - h (godzina), d (dzień), w (tydzień).

season - najkrótszy okres czasu, w którym oczekuje się powtarzający się wzorzec ("sezon") (minimum '2h', nie może być dłuższy niż okres eval, liczba wpisów w okresie eval musi być większa niż dwukrotność wynikającej częstotliwości (sezon/h)), zdefiniowany jako <N><jednostka czasu> gdzie
N - liczba jednostek czasu
jednostka czasu - h (godzina), d (dzień), w (tydzień).

deviations - liczba odchyleń standardowych (obliczanych przez devalg) do uznania za anomalie (może być dziesiętna), (musi być większa lub równa 1, domyślnie 3)

devalg (musi być w cudzysłowiu) - algorytm odchylenia standardowego, może być stddevpop, stddevsamp lub mad (domyślnie)

s_window - rozpiętość (w opóźnieniach) okna loess do ekstrakcji sezonowej (domyślnie 10 * liczba wpisów w eval period + 1)
Przykłady:
=> trendstl(/host/key,100h:now/h,10h,2h) → analizuj ostatnie 100 godzin danych trendu,
znajdź współczynnik anomalii dla ostatnich 10 godzin tego okresu,
oczekując, że okresowość będzie wynosić 2h,
pozostałe wartości serii z okresu ewaluacji uważa się za anomalie, jeżeli osiągną wartość 3 odchyleń liczonych za pomocą MAD tej pozostałej serii
=> trendstl(/host/key,100h:now/h-10h,100h,2h,2.1,"mad") → analizuj okres 100 godzin danych trendu, do 10 godzin temu,
znajdź współczynnik anomalii dla całego tego okresu
oczekując, że okresowość będzie wynosić 2h,
pozostałe wartości serii z okresu ewaluacji uważa się za anomalie, jeżeli osiągną wartość 2,1 odchyleń liczonych za pomocą MAD tej pozostałej serii
=> trendstl(/host/key,100d:now/d-1d,10d,1d,4,,10) → analizuj 100 dni danych trendu do dnia wcześniej,
znajdź współczynnik anomalii dla okresu ostatnich 10 dni tego okresu,
oczekując, że okresowość będzie wynosić 1d,
pozostałe wartości serii z okresu ewaluacji uważa się za anomalie, jeżeli osiągną wartość 4 odchyleń liczonych za pomocą MAD tej pozostałej serii,
nadpisując domyślną rozpiętość okna loess do ekstrakcji sezonowej "10 * liczba wpisów w eval period + 1" z rozpiętością 10 opóźnień
=> trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") → analizuj poprzedni miesiąc rok temu,
znajdź współczynnik anomalii ostatniego dnia tego okresu
oczekując, że okresowość będzie wynosić 2h,
wpozostałe wartości serii z okresu ewaluacji uważa się za anomalie, jeżeli osiągną wartość 3 odchylenia standardowego próbki tej pozostałej serii
trendsum (/host/key,time period:time shift)
Suma wartości trendów w zdefiniowanym okresie czasu. Zobacz wspólne parametry. Przykłady:
=> trendsum(/host/key,1h:now/h) → suma dla poprzedniej godziny (np. 12:00-13:00)
=> trendsum(/host/key,1h:now/h-1h) → suma dla dwóch godzin temu (11:00-12:00)
=> trendsum(/host/key,1h:now/h-2h) → suma dla trzech godzin temu (10:00-11:00)
=> trendsum(/host/key,1M:now/M-1y) → suma dla poprzedniego miesiąca rok temu