[comment]: # ({b10f67fb-ee60e21e})
# 1. Функции агрегации

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

-   [выражениях триггера](/manual/config/triggers/expression)
-   [вычисляемых элементах данных](/manual/config/items/itemtypes/calculated)

Функции агрегации могут работать с:

-   историей элементов данных, например: `min(/узел_сети/ключ,1h)`
-   [функциями foreach](/manual/appendix/functions/aggregate/foreach) в качестве
    единственного параметра, например: `min(last_foreach(/*/ключ))` (только в вычисляемых элементах данных; нельзя использовать в триггерах)

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

-   параметры функций разделяются запятыми
-   необязательные параметры функций (или части параметров) обозначаются угловыми скобками
    `<` `>`
-   параметры, специфичные для функций, описываются с каждой функцией
-   параметры `/узел_сети/ключ` и `(сек|#число)<:сдвиг_времени>` никогда не должны заключаться в кавычки

[comment]: # ({/b10f67fb-ee60e21e})

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

-   `/узел_сети/ключ` является общим обязательным первым параметром для функций, ссылающихся на историю элемента данных узла сети
-   `(сек|#число)<:сдвиг_времени>` является общим вторым параметром для функций, ссылающихся на историю элемента данных узла сети, где:
    -   **сек** — максимальный [период вычисления](/manual/config/triggers#период-вычисления) в секундах (могут использоваться [суффиксы](/manual/appendix/suffixes) времени), либо
    -   **\#число** — максимальная [область вычисления](/manual/config/triggers#период-вычисления) среди последних собранных значений (если начинается со знака решётки)
    -   **сдвиг_времени** (опционально) позволяет сдвигать точку вычислений по времени назад в прошлое. Смотрите [более подробную информацию](/manual/config/triggers/expression#сдвиг-времени) относительно того, как указывать сдвиг времени.

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

[comment]: # ({6fc71f9d-ad86e84b})
#### Функции агрегации

|ФУНКЦИЯ|<|<|
|--|--|--|
|**Описание**|**Параметры, специфичные для функции**|**Комментарии**|
|**avg** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Среднее значение элементов данных за указанный период вычислений.|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаемы [функции foreach](/manual/appendix/functions/aggregate/foreach): avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach<br><br>Примеры:<br>=> **avg**(/узел_сети/ключ,**1h**) → среднее значение за последний час до [текущего момента](/manual/config/triggers#период-вычисления)<br>=> **avg**(/узел_сети/ключ,**1h:now-1d**) → среднее значение за час с 25 часов назад до 24 часов назад от [текущего момента](/manual/config/triggers#период-вычисления)<br>=> **avg**(/узел_сети/ключ,**\#5**) → среднее значение из пяти последних значений<br>=> **avg**(/узел_сети/ключ,**\#5:now-1d**) → среднее значение из пяти последних значений, исключая значения, полученные за последние 24 часа<br><br>Сдвиг времени полезен, когда нужно сравнить текущее среднее значение со средним значением некоторое время назад.|
|**bucket\_percentile** (фильтр,период_времени,процент)|<|<|
|Вычисление процентиля из разрядов гистограммы.|**фильтр** — смотрите [фильтр элементов данных](/manual/appendix/functions/aggregate/foreach#синтаксис-фильтра-элементов-данных)<br>**период_времени** — смотрите [период времени](/manual/appendix/functions/aggregate/foreach#период-времени)<br>**процент** — процент (0-100)|Поддерживается только в вычисляемых элементах данных.<br><br>Эта функция является алиасом для `histogram_quantile(процент/100, bucket_rate_foreach(фильтр, период_времени, 1))`|
|**count** (функция\_foreach(фильтр,<период_времени>))|<|<|
|Количество значений в массиве, возвращаемом функцией foreach.|**функция\_foreach** — функция foreach, для которой нужно подсчитать количество возвращаемых значений (с поддерживаемыми аргументами). Смотрите [функции foreach](/manual/appendix/functions/aggregate/foreach) для более подробной информации.|Поддерживаются типы значений: int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach<br><br>Пример:<br>=> **count**(max\_foreach(/\*/net.if.in\[\*\],1h)) → количество элементов данных в net.if.in, которые получали данные в течение последнего часа до [текущего момента](/manual/config/triggers#период-вычисления)<br><br>Обратите внимание, что использование **count()** с функциями foreach, относящимися к истории (max\_foreach, avg\_foreach и т.п.), может сказаться на производительности, в то время как использование функции **exists\_foreach()**, которая работает только с данными конфигурации, не окажет такого влияния.|
|**histogram\_quantile** (квантиль,разряд1,значение1,разряд2,значение2,...)|<|<|
|Вычисление φ-го квантиля из разрядов гистограммы.|**квантиль** — 0 ≤ φ ≤ 1<br>**разрядN, значениеN** — вручную введённые пары (>=2) параметров либо результат вызова [bucket\_rate\_foreach](/manual/appendix/functions/aggregate/foreach)|Поддерживается только в вычисляемых элементах данных.<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): bucket_rate_foreach<br><br>По функционалу соответствует '[histogram\_quantile \[en\]](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile)' из PromQL.<br><br> Возвращает -1, если значения последнего разряда 'Infinity' (*"+inf"*) равны 0. <br><br>Примеры:<br>=> **histogram\_quantile**(0.75,1.0,last(/узел_сети/rate\_bucket\[1.0\]),"+Inf",last(/узел_сети/rate\_bucket\[Inf\])<br>=> **histogram\_quantile**(0.5,bucket\_rate\_foreach(//item\_key,30s))|
|**item\_count** (фильтр)|<|<|
|Подсчёт существующих в конфигурации элементов данных, соответствующих критериям фильтра.|**фильтр** — критерий для выбора элементов данных, позволяет ссылаться на группы узлов сети, узлы сети, ключи элементов данных и теги. Поддерживаются подстановочные символы. Смотрите [фильтр элементов данных](/manual/appendix/functions/aggregate/foreach#синтаксис-фильтра-элементов-данных) для более подробной информации.|Поддерживается только в вычисляемых элементах данных.<br><br>Поддерживаются типы значений: int<br><br>Работает как алиас для функции *count(exists\_foreach(фильтр))*.<br><br>Пример:<br>=> **item\_count**(/\*/agent.ping?\[group="Host group 1"\]) → количество узлов сети с элементом данных *agent.ping* в группе узлов сети «Host group 1»|
|**kurtosis** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Эксцесс («островершинность») распределения вероятностей собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Коэффициент эксцесса](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D0%B5%D0%BD%D1%82_%D1%8D%D0%BA%D1%81%D1%86%D0%B5%D1%81%D1%81%D0%B0), [Kurtosis \[en\]](https://en.wikipedia.org/wiki/Kurtosis)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **kurtosis**(/узел_сети/ключ,**1h**) → эксцесс за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**mad** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Среднее абсолютное отклонение собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Среднее абсолютное отклонение](https://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **mad**(/узел_сети/ключ,**1h**) → среднее абсолютное отклонение за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**max** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Наибольшее значение элемента данных в течение определённого периода оценки.|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach<br><br>Пример:<br>=> **max**(/узел_сети/ключ,**1h**) - **min**(/узел_сети/ключ,**1h**) → вычисление разницы между наибольшим и наименьшим значениями за последний час до [текущего момента](/manual/config/triggers#период-вычисления) (дельта значений)|
|**min** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Наименьшее значение элемента данных в течение определённого периода оценки.|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach<br><br>Пример:<br>=> **max**(/узел_сети/ключ,**1h**) - **min**(/узел_сети/ключ,**1h**) → вычисление разницы между наибольшим и наименьшим значениями за последний час до [текущего момента](/manual/config/triggers#период-вычисления) (дельта значений)|
|**skewness** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Асимметрия распределения вероятностей собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Коэффициент асимметрии](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D0%B5%D0%BD%D1%82_%D0%B0%D1%81%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D0%B8)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **skewness**(/узел_сети/ключ,**1h**) → коэффициент асимметрии за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**stddevpop** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Среднеквадратическое отклонение для генеральной совокупности собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Среднеквадратическое отклонение](https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **stddevpop**(/узел_сети/ключ,**1h**) → стандартное отклонение для генеральной совокупности за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**stddevsamp** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Среднеквадратическое отклонение для выборки собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Среднеквадратическое отклонение](https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Для работы этой функции требуется как минимум два значения данных.<br><br>Пример:<br>=> **stddevsamp**(/узел_сети/ключ,**1h**) → стандартное отклонение для выборки за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**sum** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Сумма собранных значений в течение определённого периода оценки.|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach<br><br>Пример:<br>=> **sum**(/узел_сети/ключ,**1h**) → сумма значений за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**sumofsquares** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Сумма квадратов собранных значений в течение определённого периода оценки.|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **sumofsquares**(/узел_сети/ключ,**1h**) → сумма квадратов за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**varpop** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Генеральная (совокупная) дисперсия собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Дисперсия случайной величины](https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BF%D0%B5%D1%80%D1%81%D0%B8%D1%8F_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B9_%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D0%BD%D1%8B)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Пример:<br>=> **varpop**(/узел_сети/ключ,**1h**) → дисперсия случайной величины за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|
|**varsamp** (/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>)|<|<|
|Выборочная дисперсия собранных значений в течение определённого периода оценки.<br><br>Смотрите также: [Выборочная дисперсия](https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D0%B1%D0%BE%D1%80%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%B4%D0%B8%D1%81%D0%BF%D0%B5%D1%80%D1%81%D0%B8%D1%8F)|Смотрите [общие параметры](#общие-параметры).|Поддерживаются типы значений: float, int<br><br>Поддерживаются [функции foreach](/manual/appendix/functions/aggregate/foreach): last_foreach<br><br>Для работы этой функции требуется как минимум два значения данных.<br><br>Пример:<br>=> **varsamp**(/узел_сети/ключ,**1h**) → выборочная дисперсия за последний час до [текущего момента](/manual/config/triggers#период-вычисления)|

[comment]: # ({/6fc71f9d-ad86e84b})
