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

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

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

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

Подробности функций

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

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

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

Параметры:

  • Смотрите общие параметры;
  • время — горизонт предсказания в секундах (могут использоваться суффиксы времени); поддерживаются отрицательные значения;
  • аппроксимация (опционально; должна быть в двойных кавычках) — функция, используемая для аппроксимации данных истории. Поддерживаются аппроксимации:
    linear — линейная функция (по умолчанию)
    polynomialN — полиномиальная степени N (1 <= N <= 6)
    exponential — экспоненциальная функция
    logarithmic — логарифмическая функция
    power — степенная функция
    Обратите внимание, что polynomial1 эквивалентно linear;
  • режим (опционально; должен быть в двойных кавычках) — требуемый вывод. Поддерживаются режимы:
    value — значение (по умолчанию)
    max — максимум
    min — минимум
    deltamax-min
    avg — среднее
    Обратите внимание, что value оценивает значение элемента данных на момент текущий_момент + время; max, min, delta и avg исследуют оценку значения элемента данных в интервале между текущий_момент и текущий_момент + время.

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

  • Если возвращаемое значение больше, чем 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(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,порог,<аппроксимация>)

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

Параметры:

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

  • Если возвращаемое значение больше, чем 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, на основании данных последнего часа и предположении, что элемент данных ведёт себя как квадратный (второй степени) многочлен

См. все поддерживаемые функции.