8. Функции прогнозирования

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

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

  • параметры функций разделяются запятыми
  • необязательные параметры функций (или части параметров) обозначаются угловыми скобками < >
  • параметры, специфичные для функций, описываются с каждой функцией
  • параметры /узел_сети/ключ и (сек|#число)<:сдвиг_времени> никогда не должны заключаться в кавычки
Общие параметры
  • /узел_сети/ключ является общим обязательным первым параметром для функций, ссылающихся на историю элемента данных узла сети
  • (сек|#число)<:сдвиг_времени> является общим вторым параметром для функций, ссылающихся на историю элемента данных узла сети, где:
    • сек - максимальный период вычисления в секундах (могут использоваться суффиксы времени), либо
    • #число - максимальная область вычисления среди последних собранных значений (если начинается со знака решётки)
    • сдвиг_времени (опционально) позволяет сдвигать точку вычислений по времени назад в прошлое. Смотрите более подробную информацию относительно того, как указывать сдвиг времени.

Функции прогнозирования

ФУНКЦИЯ
Описание Параметры, специфичные для функции Комментарии
forecast (/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,время,<аппроксимация>,<режим>)
Будущее значение, наибольшее, наименьшее, дельта или среднее элемента данных. Смотрите общие параметры.

время - горизонт предсказания в секундах (могут использоваться суффиксы времени); поддерживаются отрицательные значения

аппроксимация (опционально; должна быть в двойных кавычках) - функция, используемая для аппроксимации данных истории

Поддерживаются аппроксимации:
linear - линейная функция
polynomialN - полиномиальная степени N (1 <= N <= 6)
exponential - экспоненциальная функция
logarithmic - логарифмическая функция
power - степенная функция

Обратите внимание, что:
по умолчанию - linear, а polynomial1 эквивалентно linear

режим (опционально; должен быть в двойных кавычках) - требуемый вывод

Поддерживаются режимы:
value - значение (по умолчанию)
max - максимум
min - минимум
delta - max-min
avg - среднее

Обратите внимание, что:
value оценивает значение элемента данных на момент текущий_момент + время
max, min, delta и avg исследуют оценку значения элемента данных в интервале между текущий_момент и текущий_момент + время
Поддерживаются типы значений: float, int

Если возвращаемое значение больше, чем 1.7976931348623157E+308, или меньше, чем -1.7976931348623157E+308, то возвращаемое значение усекается до 1.7976931348623157E+308 или -1.7976931348623157E+308 соответственно.

Переходит в неподдерживаемое состояние только при некорректном использовании в выражении (ошибочный тип элемента данных, недопустимые параметры), в противном случае при ошибках возвращает -1.

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

Смотрите также дополнительную информацию о прогнозирующих функуциях триггеров.
timeleft (/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,порог,<аппроксимация>)
Время в секундах, которое требуется для достижения элементом данных указанного порогового значения. Смотрите общие параметры.

порог - достигаемое значение (могут использоваться суффиксы единиц измерения)

аппроксимация (опционально; должна быть в двойных кавычках) - см. forecast()
Поддерживаются типы значений: float, int

Если возвращаемое значение больше, чем 1.7976931348623157E+308, то возвращаемое значение усекается до 1.7976931348623157E+308.

Возвращает 1.7976931348623157E+308, если пороговое значение недостижимо.

Переходит в неподдерживаемое состояние только при некорректном использовании в выражении (ошибочный тип элемента данных, недопустимые параметры), в противном случае при ошибках возвращает -1.

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

Смотрите также дополнительную информацию о прогнозирующих функуциях триггеров.