[comment]: # ({2e2a1a06-1910d8fa})
# 8 Funkcje predykcyjne

Wszystkie funkcje wymienione tutaj są obsługiwane w:

-   [Wyrażeniach wyzwalacza](/manual/config/triggers/expression)
-   [Pozycjach obliczonych](/manual/config/items/itemtypes/calculated)

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

-   Parametry funkcji są oddzielone przecinkiem
-   Opcjonalne parametry funkcji (lub części parametrów) są oznaczone jako
    `<` `>`
-   Specyficzne dla funkcji parametry są opisane przy każdej funkcji
-   Parametry `/host/key` oraz `(sec|#num)<:time shift>` nigdy nie powinny być umieszczane w 
    cudzysłowiu

[comment]: # ({/2e2a1a06-1910d8fa})

[comment]: # ({4d343eb8-4d343eb8})
##### Wspólne parametry

-   `/host/key` to wspólny obowiązkowy pierwszy parametr dla funkcji, 
    odnoszących się do historii pozycji hosta
-   `(sec|#num)<:time shift>` to wspólny drugi parametr dla funkcji, 
    odnoszących się do historii pozycji hosta, gdzie:
    -   **sec** - maksymalny [okres
        ewaluacji](/manual/config/triggers#evaluation_period) w sekundach (można używać [przyrostków
        czasowych](/manual/appendix/suffixes)), lub
    -   **\#num** - maksymalny [zakres
        ewaluacji](/manual/config/triggers#evaluation_period) w ostatnio
        zbieranych wartościach (jeśli poprzedzony jest znakiem hash)
    -   **time shift** (opcjonalny) pozwala przesunąć punkt ewaluacji 
        wstecz w czasie. Zobacz [więcej
        szczegółów](/manual/config/triggers/expression#time_shift) na
        temat określania przesunięcia czasowego.

[comment]: # ({/4d343eb8-4d343eb8})

[comment]: # ({82cd0adc-e6aa7a7c})
#### Funkcje predykcyjne

|FUNKCJA|<|<|
|--|--|--|
|**Opis**|**Parametry specyficzne dla funkcji**|**Uwagi**|
|**forecast** (/host/key,(sec\|\#num)<:time shift>,time,<fit>,<mode>)|<|<|
|Przyszła wartość, maksimum, minimum, różnica lub średnia pozycji.|Zobacz [wspólne parametry](#common-parameters).<br><br>**time** - horyzont prognozy w sekundach (mogą być używane przyrostki czasu); obsługiwane są wartości ujemne<br><br>**fit** (opcjonalny; musi być w podwójnych cudzysłowach) - funkcja używana do dopasowania danych historycznych<br><br>Obsługiwane parametry `fit`:<br>*linear* - funkcja liniowa<br>*polynomialN* - wielomian stopnia N (1 <= N <= 6)<br>*exponential* - funkcja wykładnicza<br>*logarithmic* - funkcja logarytmiczna<br>*power* - funkcja potęgowa<br><br>Uwaga:<br>*linear* jest domyślna, *polynomial1* jest równoważne *linear*<br><br>**mode** (opcjonalny; musi być w podwójnych cudzysłowach) - żądane wyjście<br><br>Obsługiwane parametry `mode`:<br>*value* - wartość (domyślne)<br>*max* - maksimum<br>*min* - minimum<br>*delta* - *max*-*min*<br>*avg* - średnia<br><br>Uwaga:<br>*value* szacuje wartość pozycji w momencie `teraz` + `time`<br>*max*, *min*, *delta* i *avg* badają szacunkową wartość pozycji w przedziale między `teraz` a `teraz` + `time`|Obsługiwane typy wartości: float, int<br><br>Jeśli wartość do zwrócenia jest większa niż 1.7976931348623157E+308 lub mniejsza niż -1.7976931348623157E+308, zwrócona wartość jest przycięta odpowiednio do 1.7976931348623157E+308 lub -1.7976931348623157E+308.<br><br>Staje się nieobsługiwana tylko w przypadku niewłaściwego użycia w wyrażeniu (zły typ pozycji, nieprawidłowe parametry), w przeciwnym razie zwraca -1 w przypadku błędów.<br><br>Przykłady:<br>=> **forecast**(/host/key,**\#10**,**1h**) → prognozuj wartość pozycji za godzinę na podstawie ostatnich 10 wartości<br>=> **forecast**(/host/key,**1h**,**30m**) → prognozuj wartość pozycji za 30 minut na podstawie danych z ostatniej godziny<br>=> **forecast**(/host/key,**1h:now-1d**,**12h**) → prognozuj wartość pozycji za 12 godzin na podstawie danych z godziny sprzed jednego dnia<br>=> **forecast**(/host/key,**1h**,**10m**,"exponential") → prognozuj wartość pozycji za 10 minut na podstawie danych z ostatniej godziny i funkcji wykładniczej<br>=> **forecast**(/host/key,**1h**,**2h**,"polynomial3","max") → prognozuj maksymalną wartość, jaką może osiągnąć pozycja w ciągu następnych dwóch godzin na podstawie danych z ostatniej godziny i wielomianu trzeciego stopnia<br>=> **forecast**(/host/key,**\#2**,**-20m**) → oszacuj wartość pozycji sprzed 20 minut na podstawie ostatnich dwóch wartości (może to być bardziej precyzyjne niż użycie last(), szczególnie jeśli pozycja jest rzadko aktualizowana, np. raz na godzinę)<br><br>Zobacz także dodatkowe informacje na temat [predykcyjnych funkcji wyzwalaczy](/manual/config/triggers/prediction).|
|**timeleft** (/host/key,(sec\|\#num)<:time shift>,threshold,<fit>)|<|<|
|Czas w sekundach potrzebny do osiągnięcia przez pozycję określonego progu.|Zobacz [wspólne parametry](#common-parameters).<br><br>**threshold** - wartość do osiągnięcia (mogą być używane [przyrostki jednostek](/manual/appendix/suffixes))<br><br>**fit** (opcjonalny; musi być w podwójnych cudzysłowach) - zobacz forecast()|Obsługiwane typy wartości: float, int<br><br>Jeśli wartość do zwrócenia jest większa niż 1.7976931348623157E+308, zwrócona wartość jest przycięta do 1.7976931348623157E+308.<br><br>Zwraca 1.7976931348623157E+308, jeśli próg nie może być osiągnięty.<br><br>Staje się nieobsługiwana tylko w przypadku niewłaściwego użycia w wyrażeniu (zły typ pozycji, nieprawidłowe parametry), w przeciwnym razie zwraca -1 w przypadku błędów.<br><br>Przykłady:<br>=> **timeleft**(/host/key,**\#10**,**0**) → czas do osiągnięcia przez wartość pozycji zera na podstawie ostatnich 10 wartości<br>=> **timeleft**(/host/key,**1h**,**100**) → czas do osiągnięcia przez wartość pozycji 100 na podstawie danych z ostatniej godziny<br>=> **timeleft**(/host/key,**1h:now-1d**,**100**) → czas do osiągnięcia przez wartość pozycji 100 na podstawie danych z godziny sprzed jednego dnia<br>=> **timeleft**(/host/key,**1h**,**200**,"polynomial2") → czas do osiągnięcia przez wartość pozycji 200 na podstawie danych z ostatniej godziny i założenia, że pozycja zachowuje się jak wielomian kwadratowy (drugiego stopnia)<br>Zobacz także dodatkowe informacje na temat [predykcyjnych funkcji wyzwalaczy](/manual/config/triggers/prediction).|

[comment]: # ({/82cd0adc-e6aa7a7c})
