5 Функции трендов

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

Тренды хранят агрегированные почасовые значения. Функции трендов используют эти почасовые средние значения, поэтому они полезны для долгосрочного анализа.

Результаты функций трендов кэшируются, поэтому при нескольких вызовах одной и той же функции с одинаковыми параметрами информация из базы данных извлекается только один раз. Кэш функций трендов управляется параметром сервера TrendFunctionCacheSize.

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

trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2

будет вычисляться один раз в день. Если триггер содержит как функции трендов, так и функции истории (или функции даты и времени и/или nodata()), он вычисляется в соответствии с обычными принципами.

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

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

Function Description
baselinedev Возвращает количество отклонений (по алгоритму stddevpop) между последним периодом данных и теми же периодами данных в предыдущих сезонах.
baselinewma Вычисляет базовую линию, усредняя данные из того же временного интервала в нескольких равных периодах времени ("сезонах") с использованием алгоритма взвешенного скользящего среднего.
trendavg Среднее значение трендов в пределах заданного периода времени.
trendcount Количество успешно полученных значений истории, использованных для вычисления значения тренда в пределах заданного периода времени.
trendmax Максимум значений трендов в пределах заданного периода времени.
trendmin Минимум значений трендов в пределах заданного периода времени.
trendstl Возвращает долю аномалий за период обнаружения — десятичное значение от 0 до 1, которое равно ((количество аномальных значений)/(общее количество значений)).
trendsum Сумма значений трендов в пределах заданного периода времени.
Общие параметры
  • /host/key — это общий обязательный первый параметр
  • time period:time shift — это общий второй параметр, где:
    • time period — период времени (минимум '1h'), задаваемый как <N><time unit>, где N — количество единиц времени, time unit — h (час), d (день), w (неделя), M (месяц) или y (год).
    • time shiftсмещение периода времени (см. примеры функций)

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

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

  • Параметры функций разделяются запятой
  • Необязательные параметры функций (или части параметров) обозначаются с помощью < >
  • Специфические для функции параметры описаны для каждой функции отдельно
  • Параметры /host/key и time period:time shift никогда не должны заключаться в кавычки
baselinedev(/host/key,data period:time shift,season unit,num seasons)

Возвращает количество отклонений (по алгоритму stddevpop) между последним периодом данных и такими же периодами данных в предыдущих сезонах.

Параметры:

  • См. общие параметры
  • data period — период сбора данных в пределах сезона, задаётся как <N><time unit>, где:
    N — количество единиц времени
    time unit — h (час), d (день), w (неделя), M (месяц) или y (год), должно быть равно season или меньше него
  • season unit — календарная единица, определяющая один сезон (h, d, w, M, y); не может быть меньше data period
  • num seasons — количество сезонов для оценки

Примеры:

baselinedev(/host/key,1d:now/d,"M",6) #вычисление количества стандартных отклонений (генеральной совокупности) между предыдущим днём и тем же днём в предыдущие 6 месяцев. Если дата не существует в предыдущем месяце, будет использован последний день месяца (Jul,31 будет анализироваться относительно Jan,31, Feb, 28,... June, 30)
baselinedev(/host/key,1h:now/h,"d",10)  #вычисление количества стандартных отклонений генеральной совокупности между предыдущим часом и тем же часом суток в течение 10 предыдущих дней
baselinewma(/host/key,data period:time shift,season unit,num seasons)

Вычисляет базовый уровень путём усреднения данных из одного и того же временного интервала в нескольких равных периодах времени ("сезонах") с использованием алгоритма взвешенного скользящего среднего.

Параметры:

  • См. общие параметры
  • data period — период сбора данных в пределах сезона, задаётся как <N><time unit>, где:
    N — количество единиц времени
    time unit — h (час), d (день), w (неделя), M (месяц) или y (год), должно быть равно сезону или меньше него
    Time shift — смещение периода времени, определяет конец временного интервала сбора данных в сезонах (см. примеры)
  • season unit — календарная единица, определяющая один сезон (h, d, w, M, y); не может быть меньше, чем data period
  • num seasons — количество сезонов для оценки

Примеры:

baselinewma(/host/key,1h:now/h,"d",3) #вычисление базового уровня по одному и тому же часу суток за последние 3 полных дня, заканчивающихся вчера. Если "now" — понедельник 13:30, будут проанализированы данные за 12:00-12:59 пятницы, субботы и воскресенья
baselinewma(/host/key,2h:now/h,"d",3) #вычисление базового уровня по одному и тому же двухчасовому интервалу за последние 3 полных дня, заканчивающихся вчера. Если "now" — понедельник 13:30, будут проанализированы данные за 11:00-12:59 пятницы, субботы и воскресенья
baselinewma(/host/key,1d:now/d,"M",4) #вычисление базового уровня по тому же дню месяца, что и "вчера", за 4 месяца, предшествующие последнему полному месяцу. Если требуемая дата не существует, берётся последний день месяца. Если сегодня 1 сентября, будут проанализированы данные за 31 июля, 30 июня, 31 мая, 30 апреля.
trendavg(/host/key,time period:time shift)

Среднее значений трендов в пределах заданного периода времени.

Параметры:

Примеры:

trendavg(/host/key,1h:now/h) #среднее за предыдущий час (например, 12:00-13:00)
trendavg(/host/key,1h:now/h-1h) #среднее за два часа назад (11:00-12:00)
trendavg(/host/key,1h:now/h-2h) #среднее за три часа назад (10:00-11:00)
trendavg(/host/key,1M:now/M-1y) #среднее за предыдущий месяц год назад
trendcount(/host/key,time period:time shift)

Количество успешно полученных значений истории, использованных для вычисления значения тренда в пределах заданного периода времени.

Параметры:

Примеры:

trendcount(/host/key,1h:now/h) #количество значений за предыдущий час (например, 12:00-13:00)
trendcount(/host/key,1h:now/h-1h) #количество значений за два часа назад (11:00-12:00)
trendcount(/host/key,1h:now/h-2h) #количество значений за три часа назад (10:00-11:00)
trendcount(/host/key,1M:now/M-1y) #количество значений за предыдущий месяц год назад
trendmax(/host/key,time period:time shift)

Максимум в значениях трендов в пределах заданного периода времени.

Параметры:

Примеры:

trendmax(/host/key,1h:now/h) #максимум за предыдущий час (например, 12:00-13:00)
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → вычислить разницу между максимальным и минимальным значениями (дельта тренда) за предыдущий час (12:00-13:00)
trendmax(/host/key,1h:now/h-1h) #максимум за период два часа назад (11:00-12:00)
trendmax(/host/key,1h:now/h-2h) #максимум за период три часа назад (10:00-11:00)
trendmax(/host/key,1M:now/M-1y) #максимум за предыдущий месяц год назад
trendmin(/host/key,time period:time shift)

Минимум в значениях трендов в пределах заданного периода времени.

Параметры:

Примеры:

trendmin(/host/key,1h:now/h) #минимум за предыдущий час (например, 12:00-13:00)
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → вычислить разницу между максимальным и минимальным значениями (дельта тренда) за предыдущий час (12:00-13:00)
trendmin(/host/key,1h:now/h-1h) #минимум за период два часа назад (11:00-12:00)
trendmin(/host/key,1h:now/h-2h) #минимум за период три часа назад (10:00-11:00)
trendmin(/host/key,1M:now/M-1y) #минимум за предыдущий месяц год назад
trendstl(/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s window>)

Возвращает долю аномалий за период обнаружения — десятичное значение от 0 до 1, которое вычисляется как ((количество аномальных значений)/(общее количество значений)).

Параметры:

  • См. общие параметры
  • eval period — период времени, который должен быть декомпозирован (минимум '1h'), задаётся в формате <N><time unit>, где
    N — количество единиц времени
    time unit — h (час), d (день), w (неделя), M (месяц) или y (год)
  • detection period — период времени перед концом eval period, для которого вычисляются аномалии (минимум '1h', не может быть длиннее eval period), задаётся в формате <N><time unit>, где
    N — количество единиц времени
    time unit — h (час), d (день), w (неделя)
  • season — кратчайший период времени, в котором ожидается повторяющийся шаблон ("сезон") (минимум '2h', не может быть длиннее eval period, количество записей в eval period должно быть больше удвоенного значения результирующей частоты (season/h)), задаётся в формате <N><time unit>, где
    N — количество единиц времени
    time unit — h (час), d (день), w (неделя)
  • deviations — количество отклонений (вычисляемых с помощью devalg), при котором значение считается аномалией (может быть дробным), (должно быть больше или равно 1, по умолчанию 3)
  • devalg (должен быть заключён в двойные кавычки) — алгоритм отклонения; может быть stddevpop, stddevsamp или mad (по умолчанию)
  • s window — ширина (в лагах) окна loess для выделения сезонной компоненты (по умолчанию 10 * количество записей в eval period + 1)

Примеры:

trendstl(/host/key,100h:now/h,10h,2h) #анализировать последние 100 часов трендовых данных, найти долю аномалий за последние 10 часов этого периода, ожидая периодичность 2h; значения остаточного ряда за период оценки считаются аномалиями, если они достигают значения 3 отклонений MAD этого остаточного ряда
trendstl(/host/key,100h:now/h-10h,100h,2h,2.1,"mad") #анализировать период в 100 часов трендовых данных до момента 10 часов назад, найти долю аномалий за весь этот период, ожидая периодичность 2h; значения остаточного ряда за период оценки считаются аномалиями, если они достигают значения 2,1 отклонения MAD этого остаточного ряда
trendstl(/host/key,100d:now/d-1d,10d,1d,4,,10) #анализировать 100 дней трендовых данных до суток назад, найти долю аномалий за последние 10d этого периода, ожидая периодичность 1d; значения остаточного ряда за период оценки считаются аномалиями, если они достигают значения 4 отклонений MAD этого остаточного ряда, при этом значение ширины окна loess для выделения сезонной компоненты по умолчанию "10 * количество записей в eval period + 1" переопределяется значением 10 лагов
trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") #анализировать предыдущий месяц год назад, найти долю аномалий за последний день этого периода, ожидая периодичность 2h; значения остаточного ряда за период оценки считаются аномалиями, если они достигают значения 3 отклонений выборочного стандартного отклонения этого остаточного ряда
trendsum(/host/key,time period:time shift)

Сумма значений трендов в пределах заданного периода времени.

Параметры:

Примеры:

trendsum(/host/key,1h:now/h) #сумма за предыдущий час (например, 12:00-13:00)
trendsum(/host/key,1h:now/h-1h) #сумма за два часа назад (11:00-12:00)
trendsum(/host/key,1h:now/h-2h) #сумма за три часа назад (10:00-11:00)
trendsum(/host/key,1M:now/M-1y) #сумма за предыдущий месяц год назад

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