[comment]: # attributes: notoc

[comment]: # ({5b5180a2-2e2a1a06})
# 8 Funções de previsão

Todas as funções listadas aqui são suportadas em:

-   [Expressões de trigger](/manual/config/triggers/expression)
-   [Itens calculados](/manual/config/items/itemtypes/calculated)
-   [Macros de expressão](/manual/config/macros/expression_macros)

As funções são listadas sem informações adicionais. Clique na função para ver os detalhes completos.

|Função|Descrição|
|--|--------|
|[forecast](#forecast)|O valor futuro, max, min, delta ou avg do item.|
|[timeleft](#timeleft)|O tempo em segundos necessário para que um item atinja o limite especificado.|

[comment]: # ({/5b5180a2-2e2a1a06})

[comment]: # ({645b8a56-4d343eb8})
##### Parâmetros comuns

-   `/host/key` é um parâmetro obrigatório comum para as funções que fazem referência ao histórico do item do host
-   `(sec|#num)<:time shift>` é um parâmetro comum para as funções que fazem referência ao histórico do item do host, onde:
    -   **sec** - [período de avaliação](/manual/config/triggers#evaluation-period) máximo em segundos (sufixos de [tempo](/manual/appendix/suffixes) podem ser usados), ou
    -   **#num** - [intervalo de avaliação](/manual/config/triggers#evaluation-period) máximo nos últimos valores coletados (se precedido por um sinal de hash)
    -   **time shift** (opcional) permite mover o ponto de avaliação para trás no tempo. Veja [mais detalhes](/manual/config/triggers/expression#time-shift) sobre como especificar o deslocamento de tempo.

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

[comment]: # ({c645f0e4-f3b63bc1})
### Detalhes da função

Algumas observações gerais sobre os parâmetros da função:

-   Os parâmetros da função são separados por vírgula
-   Parâmetros opcionais da função (ou partes do parâmetro) são indicados por
    `<` `>`
-   Parâmetros específicos da função são descritos com cada função
-   Os parâmetros `/host/key` e `(sec|#num)<:deslocamento de tempo>` nunca devem ser
    colocados entre aspas

[comment]: # ({/c645f0e4-f3b63bc1})

[comment]: # ({8a873b31-e4452b37})
##### forecast(/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>) {#forecast}

O valor futuro, máximo, mínimo, delta ou média do item.<br>
Tipos de valores suportados: *Float*, *Integer*.

Parâmetros:

-   Veja [parâmetros comuns](#common-parameters);<br>
-   **time** - o horizonte de previsão em segundos (sufixos de tempo podem ser usados); valores negativos são suportados;<br>
-   **fit** (opcional; deve ser entre aspas duplas) - a função usada para ajustar os dados históricos. Ajustes suportados:<br>*linear* - função linear (padrão)<br>*polynomialN* - polinomial de grau N (1 <= N <= 6)<br>*exponential* - função exponencial<br>*logarithmic* - função logarítmica<br>*power* - função de potência<br>Observe que *polynomial1* é equivalente a *linear*;
-   **mode** (opcional; deve ser entre aspas duplas) - a saída desejada. Modos suportados:<br>*value* - valor (padrão)<br>*max* - máximo<br>*min* - mínimo<br>*delta* - *max*-*min*<br>*avg* - média<br>Observe que *value* estima o valor do item no momento `now` + `time`; *max*, *min*, *delta* e *avg* investigam a estimativa do valor do item no intervalo entre `now` e `now` + `time`.

Comentários:

-   Se o valor a ser retornado for maior que 1.7976931348623158E+308 ou menor que -1.7976931348623158E+308, o valor de retorno é limitado a 1.7976931348623158E+308 ou -1.7976931348623158E+308, respectivamente;
-   Torna-se não suportado apenas se for usado incorretamente na expressão (tipo de item errado, parâmetros inválidos), caso contrário retorna -1 em caso de erros;
-   Veja também informações adicionais sobre [funções de trigger preditivas](/manual/config/triggers/prediction).

Exemplos:

    forecast(/host/key,#10,1h) #prevê o valor do item em uma hora com base nos últimos 10 valores
    forecast(/host/key,1h,30m) #prevê o valor do item em 30 minutos com base nos dados da última hora
    forecast(/host/key,1h:now-1d,12h) #prevê o valor do item em 12 horas com base em uma hora de um dia atrás
    forecast(/host/key,1h,10m,"exponential") #prevê o valor do item em 10 minutos com base nos dados da última hora e função exponencial
    forecast(/host/key,1h,2h,"polynomial3","max") #prevê o valor máximo que o item pode atingir nas próximas duas horas com base nos dados da última hora e polinômio cúbico (terceiro grau)
    forecast(/host/key,#2,-20m) #estima o valor do item 20 minutos atrás com base nos dois últimos valores (isso pode ser mais preciso do que usar last(), especialmente se o item for atualizado raramente, por exemplo, uma vez por hora)

[comment]: # ({/8a873b31-e4452b37})

[comment]: # ({834aceba-9b065620})
##### timeleft(/host/key,(sec|#num)<:time shift>,threshold,<fit>) {#timeleft}

O tempo em segundos necessário para que um item atinja o limite especificado.<br>
Tipos de valor suportados: *Float*, *Integer*.

Parâmetros:

-   Veja [parâmetros comuns](#common-parameters);<br>
-   **threshold** - o valor a ser atingido ([sufixos de unidade](/manual/appendix/suffixes) podem ser usados);
-   **fit** (opcional; deve ser colocado entre aspas duplas) - veja [forecast()](#forecast).

Comentários:

-   Se o valor a ser retornado for maior que 1.7976931348623158E+308, o valor de retorno é limitado a 1.7976931348623158E+308;
-   Retorna 1.7976931348623158E+308 se o limite não puder ser atingido;
-   Torna-se não suportado apenas se for usado incorretamente na expressão (tipo de item errado, parâmetros inválidos), caso contrário retorna -1 em caso de erros;
-   Veja também informações adicionais sobre [funções de trigger preditivas](/manual/config/triggers/prediction).

Exemplos:

    timeleft(/host/key,#10,0) #o tempo até que o valor do item atinja zero com base nos últimos 10 valores
    timeleft(/host/key,1h,100) #o tempo até que o valor do item atinja 100 com base nos dados da última hora
    timeleft(/host/key,1h:now-1d,100) #o tempo até que o valor do item atinja 100 com base em uma hora de um dia atrás
    timeleft(/host/key,1h,200,"polynomial2") #o tempo até que o valor do item atinja 200 com base nos dados da última hora e na suposição de que o item se comporta como um polinômio quadrático (de segundo grau)

[comment]: # ({/834aceba-9b065620})

[comment]: # ({ba59dd3a-9958c480})
Veja [todas as funções suportadas](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-9958c480})

