[comment]: # translation:outdated

[comment]: # attributes: notoc

[comment]: # (terms: forecast, timeleft )

[comment]: # ({2bf301d5-2e2a1a06})
# 8 Прогнозирующие функции

Все перечисленные здесь функции поддерживаются в:

-   [Выражениях триггеров](/manual/config/triggers/expression)
-   [Формулах вычисляемых элементов данных](/manual/config/items/itemtypes/calculated)
-   [Макросах выражений](/manual/config/macros/expression_macros)

Функции перечислены без дополнительной информации. Нажмите на функцию, чтобы увидеть полные сведения.

|Function|Description|
|--|--------|
|[forecast](#forecast)|Будущее значение, max, min, delta или avg элемента данных.|
|[timeleft](#timeleft)|Время в секундах, необходимое элементу данных для достижения указанного порогового значения.|

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

[comment]: # ({645b8a56-4d343eb8})
##### Общие параметры

-   `/host/key` — это общий обязательный первый параметр для функций,
    ссылающихся на историю элемента данных узла сети
-   `(sec|#num)<:time shift>` — это общий второй параметр для функций,
    ссылающихся на историю элемента данных узла сети, где:
    -   **sec** — максимальный [период
        вычисления](/manual/config/triggers#evaluation-period) в секундах
        (можно использовать [суффиксы времени](/manual/appendix/suffixes)), или
    -   **#num** — максимальный [диапазон
        вычисления](/manual/config/triggers#evaluation-period) в последних
        собранных значениях (если перед ним стоит знак решётки)
    -   **time shift** (необязательно) позволяет сдвинуть точку вычисления
        назад во времени. Подробнее о задании time shift см. в разделе [more
        details](/manual/config/triggers/expression#time-shift).

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

[comment]: # ({c645f0e4-f3b63bc1})
### Подробности функций

Некоторые общие замечания о параметрах функций:

-   Параметры функций разделяются запятой
-   Необязательные параметры функций (или части параметров) обозначаются
    `<` `>`
-   Специфические для функции параметры описаны для каждой функции
-   Параметры `/host/key` и `(sec|#num)<:time shift>` никогда не должны
    заключаться в кавычки

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

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

Будущее значение, максимум, минимум, дельта или среднее элемента данных.<br>
Поддерживаемые типы значений: *Float*, *Integer*.

Параметры: 

-   См. [общие параметры](#common-parameters);<br>
-   **time** — горизонт прогнозирования в секундах (можно использовать суффиксы времени); поддерживаются отрицательные значения;<br>
-   **fit** (необязательно; должно быть заключено в двойные кавычки) — функция, используемая для аппроксимации исторических данных. Поддерживаемые функции:<br>*linear* — линейная функция (по умолчанию)<br>*polynomialN* — полином степени N (1 <= N <= 6)<br>*exponential* — экспоненциальная функция<br>*logarithmic* — логарифмическая функция<br>*power* — степенная функция<br>Обратите внимание, что *polynomial1* эквивалентен *linear*;
-   **mode** (необязательно; должно быть заключено в двойные кавычки) — требуемый результат. Поддерживаемые режимы:<br>*value* — значение (по умолчанию)<br>*max* — максимум<br>*min* — минимум<br>*delta* — *max*-*min*<br>*avg* — среднее<br>Обратите внимание, что *value* оценивает значение элемента данных в момент `now` + `time`; *max*, *min*, *delta* и *avg* оценивают значение элемента данных на интервале между `now` и `now` + `time`.

Комментарии:

-   Если возвращаемое значение больше 1.7976931348623158E+308 или меньше -1.7976931348623158E+308, возвращаемое значение обрезается до 1.7976931348623158E+308 или -1.7976931348623158E+308 соответственно;
-   Становится неподдерживаемой только при неправильном использовании в выражении (неверный тип элемента данных, недопустимые параметры), в противном случае в случае ошибок возвращает -1;
-   См. также дополнительную информацию о [предиктивных функциях триггеров](/manual/config/triggers/prediction).

Примеры:

    forecast(/host/key,#10,1h) #прогноз значения элемента данных через один час на основе последних 10 значений
    forecast(/host/key,1h,30m) #прогноз значения элемента данных через 30 минут на основе данных за последний час
    forecast(/host/key,1h:now-1d,12h) #прогноз значения элемента данных через 12 часов на основе данных за один час сутки назад
    forecast(/host/key,1h,10m,"exponential") #прогноз значения элемента данных через 10 минут на основе данных за последний час и экспоненциальной функции
    forecast(/host/key,1h,2h,"polynomial3","max") #прогноз максимального значения, которого элемент данных может достичь в следующие два часа, на основе данных за последний час и кубического полинома (третьей степени)
    forecast(/host/key,#2,-20m) #оценка значения элемента данных 20 минут назад на основе последних двух значений (это может быть точнее, чем использование last(), особенно если элемент данных обновляется редко, например, раз в час)

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

[comment]: # ({834aceba-9b065620})
##### timeleft(/host/key,(sec|#num)<:сдвиг времени>,threshold,<fit>) {#timeleft}

Время в секундах, необходимое элементу данных для достижения указанного порогового значения.<br>
Поддерживаемые типы значений: *Float*, *Integer*.

Параметры: 

-   См. [общие параметры](#common-parameters);<br>
-   **threshold** — значение, которое необходимо достичь (можно использовать [суффиксы единиц](/manual/appendix/suffixes));
-   **fit** (необязательно; должно быть заключено в двойные кавычки) — см. [forecast()](#forecast).

Комментарии:

-   Если возвращаемое значение больше 1.7976931348623158E+308, оно усекается до 1.7976931348623158E+308;
-   Возвращает 1.7976931348623158E+308, если пороговое значение не может быть достигнуто;
-   Становится неподдерживаемой только при неправильном использовании в выражении (неверный тип элемента данных, недопустимые параметры), в противном случае при ошибках возвращает -1;
-   См. также дополнительную информацию о [функциях прогнозирующих триггеров](/manual/config/triggers/prediction).

Примеры:

    timeleft(/host/key,#10,0) #время до достижения значением элемента данных нуля на основе последних 10 значений
    timeleft(/host/key,1h,100) #время до достижения значением элемента данных 100 на основе данных за последний час
    timeleft(/host/key,1h:now-1d,100) #время до достижения значением элемента данных 100 на основе данных за один час сутки назад
    timeleft(/host/key,1h,200,"polynomial2") #время до достижения значением элемента данных 200 на основе данных за последний час и предположения, что элемент данных ведет себя как квадратичный полином (второй степени)

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

[comment]: # ({ba58f5e4-9958c480})
См. [все поддерживаемые функции](/manual/config/triggers/expression#functions).

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