[comment]: # attributes: notoc

[comment]: # ({e82d3ccb-a4f8cca1})
# 5 Funkcje trendów

Funkcje trendów, w przeciwieństwie do [funkcji historii](/manual/appendix/functions/history), używają danych [trend](/manual/config/items/history_and_trends#keeping-trends) do obliczeń.

Trendy przechowują godzinowe wartości agregowane.
Funkcje trendów używają tych godzinowych średnich, dlatego są przydatne do długoterminowej analizy.

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.
Pamięć podręczna funkcji trendów jest kontrolowana przez parametr serwera [TrendFunctionCacheSize](/manual/appendix/config/zabbix_server#trendfunctioncachesize).

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

```default
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 [daty i czasu](/manual/appendix/functions/time) oraz/lub [nodata()](/manual/appendix/functions/history#nodata)), jest obliczany zgodnie ze [zwykłymi zasadami](/manual/config/triggers#calculation-time).

Wszystkie funkcje wymienione tutaj są obsługiwane w:

-   [wyrażeniach wyzwalaczy](/manual/config/triggers/expression)
-   [pozycjach obliczanych](/manual/config/items/itemtypes/calculated)
-   [makrach wyrażeń](/manual/config/macros/expression_macros)

Funkcje są wymienione bez dodatkowych informacji.
Kliknij funkcję, aby zobaczyć pełne szczegóły.

|Function|Description|
|--|--------|
|[baselinedev](#baselinedev)|Zwraca liczbę odchyleń (według algorytmu stddevpop) między ostatnim okresem danych a tymi samymi okresami danych w poprzednich sezonach.|
|[baselinewma](#baselinewma)|Oblicza linię bazową przez uśrednianie danych z tego samego przedziału czasu w wielu równych okresach czasu („sezonach”) przy użyciu algorytmu ważonej średniej ruchomej.|
|[trendavg](#trendavg)|Średnia wartości trendów w zdefiniowanym okresie czasu.|
|[trendcount](#trendcount)|Liczba pomyślnie pobranych wartości historii użytych do obliczenia wartości trendu w zdefiniowanym okresie czasu.|
|[trendmax](#trendmax)|Maksimum wartości trendów w zdefiniowanym okresie czasu.|
|[trendmin](#trendmin)|Minimum wartości trendów w zdefiniowanym okresie czasu.|
|[trendstl](#trendstl)|Zwraca współczynnik anomalii w okresie wykrywania - wartość dziesiętną między 0 a 1, równą `((liczba wartości anomalii)/(łączna liczba wartości))`.|
|[trendsum](#trendsum)|Suma wartości trendów w zdefiniowanym okresie czasu.|

[comment]: # ({/e82d3ccb-a4f8cca1})

[comment]: # ({9b47c9ce-2a63633f})
##### 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) lub y (rok).
    -   **time shift** - [przesunięcie okresu czasu](/manual/config/triggers/expression#time-shift) (zobacz przykłady funkcji)

[comment]: # ({/9b47c9ce-2a63633f})

[comment]: # ({405ac9eb-bbe5ecf2})
### Szczegóły funkcji

Kilka ogólnych uwag dotyczących parametrów funkcji:

-   Parametry funkcji są oddzielane przecinkiem
-   Opcjonalne parametry funkcji (lub części parametrów) są oznaczane za pomocą `<` `>`
-   Parametry specyficzne dla danej funkcji są opisane przy każdej funkcji
-   Parametry `/host/key` oraz `time period:time shift` nigdy nie mogą być ujmowane w cudzysłów

[comment]: # ({/405ac9eb-bbe5ecf2})

[comment]: # ({e17e8d2f-f42e2c92})
##### baselinedev(/host/key,data period:time shift,season unit,num seasons) {#baselinedev}

Zwraca liczbę odchyleń (według algorytmu stddevpop) między ostatnim okresem danych a tymi samymi okresami danych w poprzednich sezonach.<br>

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)<br>
-   **data period** - okres zbierania danych w ramach sezonu, zdefiniowany jako <N><time unit>, gdzie:<br>`N` - liczba jednostek czasu<br>`time unit` - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok), musi być równa sezonowi lub od niego mniejsza<br>
-   **season unit** - jednostka kalendarzowa definiująca jeden sezon (h, d, w, M, y); nie może być mniejsza niż data period<br> 
-   **num seasons** - liczba sezonów do oceny

Przykłady:

```default
baselinedev(/host/key,1d:now/d,"M",6) #obliczanie liczby odchyleń standardowych (populacyjnych) między poprzednim dniem a tym samym dniem w poprzednich 6 miesiącach. Jeśli data nie istnieje w poprzednim miesiącu, zostanie użyty 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 populacyjnych odchyleń standardowych między poprzednią godziną a tą samą godziną dnia w ciągu 10 poprzednich dni
```

[comment]: # ({/e17e8d2f-f42e2c92})

[comment]: # ({508adac0-447a9dac})
##### baselinewma(/host/key,data period:time shift,season unit,num seasons) {#baselinewma}

Oblicza linię bazową przez uśrednianie danych z tego samego przedziału czasowego w wielu równych okresach czasu („sezonach”) przy użyciu algorytmu ważonej średniej ruchomej.<br>

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)<br>
-   **data period** - okres zbierania danych w ramach sezonu, zdefiniowany jako <N><jednostka czasu>, gdzie:<br>`N` - liczba jednostek czasu<br>`jednostka czasu` - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok), musi być równa sezonowi lub od niego mniejsza<br>Time shift - przesunięcie czasowe, określa przesunięcie okresu czasu, definiuje koniec przedziału zbierania danych w sezonach (zobacz przykłady)<br>
-   **season unit** - jednostka kalendarzowa definiująca jeden sezon (h, d, w, M, y); nie może być mniejsza niż data period<br>
-   **num seasons** - liczba sezonów do oceny

Przykłady:

```default
baselinewma(/host/key,1h:now/h,"d",3) #obliczanie linii bazowej dla tej samej godziny dnia w ostatnich 3 pełnych dniach kończących się wczoraj. Jeśli "now" to poniedziałek 13:30, analizowane będą dane dla 12:00-12:59 z piątku, soboty i niedzieli
baselinewma(/host/key,2h:now/h,"d",3) #obliczanie linii bazowej dla tego samego dwugodzinnego przedziału czasowego w ostatnich 3 pełnych dniach kończących się wczoraj. Jeśli "now" to poniedziałek 13:30, analizowane będą dane dla 11:00-12:59 z piątku, soboty i niedzieli
baselinewma(/host/key,1d:now/d,"M",4) #obliczanie linii bazowej dla tego samego dnia miesiąca co „wczoraj” w 4 miesiącach poprzedzających ostatni pełny miesiąc. Jeśli wymagana data nie istnieje, przyjmowany jest ostatni dzień miesiąca. Jeśli dziś jest 1 września, analizowane będą dane dla 31 lipca, 30 czerwca, 31 maja i 30 kwietnia.
```

[comment]: # ({/508adac0-447a9dac})

[comment]: # ({2e9dd145-50d2db8d})
##### trendavg(/host/key,time period:time shift) {#trendavg}

Średnia wartości trendów w zdefiniowanym okresie czasu.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)

Przykłady:

```default
trendavg(/host/key,1h:now/h) #średnia dla poprzedniej godziny (np. 12:00-13:00)
trendavg(/host/key,1h:now/h-1h) #średnia sprzed dwóch godzin (11:00-12:00)
trendavg(/host/key,1h:now/h-2h) #średnia sprzed trzech godzin (10:00-11:00)
trendavg(/host/key,1M:now/M-1y) #średnia dla poprzedniego miesiąca rok temu
```

[comment]: # ({/2e9dd145-50d2db8d})

[comment]: # ({533dfdf1-d66e1f00})
##### trendcount(/host/key,time period:time shift) {#trendcount}

Liczba pomyślnie pobranych wartości historii użytych do obliczenia wartości trendu w zdefiniowanym okresie czasu.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)

Przykłady:

```default
trendcount(/host/key,1h:now/h) #liczba wartości dla poprzedniej godziny (np. 12:00-13:00)
trendcount(/host/key,1h:now/h-1h) #liczba wartości sprzed dwóch godzin (11:00-12:00)
trendcount(/host/key,1h:now/h-2h) #liczba wartości sprzed trzech godzin (10:00-11:00)
trendcount(/host/key,1M:now/M-1y) #liczba wartości dla poprzedniego miesiąca rok temu
```

[comment]: # ({/533dfdf1-d66e1f00})

[comment]: # ({f0a89e58-43665d11})
##### trendmax(/host/key,time period:time shift) {#trendmax}

Maksimum w wartościach trendu w zdefiniowanym okresie czasu.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)

Przykłady:

```default
trendmax(/host/key,1h:now/h) #maksimum dla poprzedniej godziny (np. 12:00-13:00)
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → oblicza różnicę między wartościami maksymalną i minimalną (delta trendu) dla poprzedniej godziny (12:00-13:00)
trendmax(/host/key,1h:now/h-1h) #maksimum sprzed dwóch godzin (11:00-12:00)
trendmax(/host/key,1h:now/h-2h) #maksimum sprzed trzech godzin (10:00-11:00)
trendmax(/host/key,1M:now/M-1y) #maksimum dla poprzedniego miesiąca rok temu
```

[comment]: # ({/f0a89e58-43665d11})

[comment]: # ({793872d7-3c0143a2})
##### trendmin(/host/key,time period:time shift) {#trendmin}

Minimum w wartościach trendu w zdefiniowanym okresie czasu.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)

Przykłady:

```default
trendmin(/host/key,1h:now/h) #minimum dla poprzedniej godziny (np. 12:00-13:00)
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → oblicza różnicę między wartościami maksymalną i minimalną (delta trendu) dla poprzedniej godziny (12:00-13:00)
trendmin(/host/key,1h:now/h-1h) #minimum sprzed dwóch godzin (11:00-12:00)
trendmin(/host/key,1h:now/h-2h) #minimum sprzed trzech godzin (10:00-11:00)
trendmin(/host/key,1M:now/M-1y) #minimum dla poprzedniego miesiąca rok temu
```

[comment]: # ({/793872d7-3c0143a2})

[comment]: # ({0ebc63ad-aba289ed})
##### trendstl(/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s window>) {#trendstl}

Zwraca współczynnik anomalii w okresie wykrywania — wartość dziesiętną z zakresu od 0 do 1, obliczaną jako `((liczba wartości anomalii)/(całkowita liczba wartości))`.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)<br>
-   **eval period** - okres czasu, który ma zostać poddany dekompozycji (minimum „1h”), zdefiniowany jako <N><time unit>, gdzie<br>`N` - liczba jednostek czasu<br>`time unit` - h (godzina), d (dzień), w (tydzień), M (miesiąc) lub y (rok)<br>
-   **detection period** - okres czasu przed końcem eval period, dla którego obliczane są anomalie (minimum „1h”, nie może być dłuższy niż eval period), zdefiniowany jako <N><time unit>, gdzie<br>`N` - liczba jednostek czasu<br>`time unit` - h (godzina), d (dzień), w (tydzień)<br>
-   **season** - najkrótszy okres czasu, w którym oczekiwany jest powtarzający się wzorzec („sezon”) (minimum „2h”, nie może być dłuższy niż eval period, liczba wpisów w eval period musi być większa niż dwukrotność wynikowej częstotliwości (season/h)), zdefiniowany jako <N><time unit>, gdzie<br>`N` - liczba jednostek czasu<br>`time unit` - h (godzina), d (dzień), w (tydzień)
-   **deviations** - liczba odchyleń (obliczana przez devalg), przy której wartość jest uznawana za anomalię (może być dziesiętna), (musi być większa lub równa 1, domyślnie 3)
-   **devalg** (musi być ujęty w podwójny cudzysłów) - algorytm odchylenia; może to być *stddevpop*, *stddevsamp* lub *mad* (domyślnie)
-   **s window** - rozpiętość (w opóźnieniach) okna loess dla ekstrakcji sezonowej (domyślnie 10 * liczba wpisów w eval period + 1)

Przykłady:

```default
trendstl(/host/key,100h:now/h,10h,2h) #analizuje ostatnie 100 godzin danych trendu, znajduje współczynnik anomalii dla ostatnich 10 godzin tego okresu, przy założeniu okresowości 2h; wartości szeregu resztowego z okresu oceny są uznawane za anomalie, jeśli osiągną wartość 3 odchyleń MAD tego szeregu resztowego
trendstl(/host/key,100h:now/h-10h,100h,2h,2.1,"mad") #analizuje okres 100 godzin danych trendu do 10 godzin wstecz, znajduje współczynnik anomalii dla całego tego okresu przy założeniu okresowości 2h; wartości szeregu resztowego z okresu oceny są uznawane za anomalie, jeśli osiągną wartość 2,1 odchyleń MAD tego szeregu resztowego
trendstl(/host/key,100d:now/d-1d,10d,1d,4,,10) #analizuje 100 dni danych trendu do jednego dnia wstecz, znajduje współczynnik anomalii dla ostatnich 10d tego okresu, przy założeniu okresowości 1d; wartości szeregu resztowego z okresu oceny są uznawane za anomalie, jeśli osiągną wartość 4 odchyleń MAD tego szeregu resztowego, zastępując domyślną rozpiętość okna loess dla ekstrakcji sezonowej „10 * liczba wpisów w eval period + 1” rozpiętością 10 opóźnień
trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") #analizuje poprzedni miesiąc sprzed roku, znajduje współczynnik anomalii dla ostatniego dnia tego okresu przy założeniu okresowości 2h; wartości szeregu resztowego z okresu oceny są uznawane za anomalie, jeśli osiągną wartość 3 odchyleń standardowych z próby tego szeregu resztowego
```

[comment]: # ({/0ebc63ad-aba289ed})

[comment]: # ({f897c466-1b9f4c40})
##### trendsum(/host/key,time period:time shift) {#trendsum}

Suma wartości trendów w zdefiniowanym okresie czasu.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters)

Przykłady:

```default
trendsum(/host/key,1h:now/h) #suma dla poprzedniej godziny (np. 12:00-13:00)
trendsum(/host/key,1h:now/h-1h) #suma sprzed dwóch godzin (11:00-12:00)
trendsum(/host/key,1h:now/h-2h) #suma sprzed trzech godzin (10:00-11:00)
trendsum(/host/key,1M:now/M-1y) #suma dla poprzedniego miesiąca sprzed roku
```

[comment]: # ({/f897c466-1b9f4c40})

[comment]: # ({ba59dd3a-9e520569})
Zobacz [wszystkie obsługiwane funkcje](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-9e520569})
