[comment]: # translation:outdated

[comment]: # attributes: notoc

[comment]: # (terms:  avg, bucket_percentile, count, histogram_quantile, item_count, kurtosis, mad, max, min, skewness, stddevpop, stddevsamp, sum, sumofsquares, varpop, varsamp )

[comment]: # (tags:  count )

[comment]: # ({cbe17b03-ee60e21e})
# 1 Агрегатные функции

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

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

Агрегатные функции могут работать либо с:

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

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

|Функция|Описание|
|--|--------|
|[avg](#avg)|Среднее значение элемента данных за указанный период вычисления.|
|[bucket_percentile](#bucket-percentile)|Вычисляет процентиль по корзинам гистограммы.|
|[count](#count)|Количество значений в массиве, возвращаемом функцией foreach.|
|[histogram_quantile](#histogram-quantile)|Вычисляет φ-квантиль по корзинам гистограммы.|
|[item_count](#item-count)|Количество существующих элементов данных в конфигурации, соответствующих критериям фильтра.|
|[kurtosis](#kurtosis)|«Хвостатость» распределения вероятностей собранных значений за указанный период вычисления.|
|[mad](#mad)|Медианное абсолютное отклонение собранных значений за указанный период вычисления.|
|[max](#max)|Наибольшее значение элемента данных за указанный период вычисления.|
|[min](#min)|Наименьшее значение элемента данных за указанный период вычисления.|
|[skewness](#skewness)|Асимметрия распределения вероятностей собранных значений за указанный период вычисления.|
|[stddevpop](#stddevpop)|Среднеквадратичное отклонение генеральной совокупности собранных значений за указанный период вычисления.|
|[stddevsamp](#stddevsamp)|Выборочное среднеквадратичное отклонение собранных значений за указанный период вычисления.|
|[sum](#sum)|Сумма собранных значений за указанный период вычисления.|
|[sumofsquares](#sumofsquares)|Сумма квадратов собранных значений за указанный период вычисления.|
|[varpop](#varpop)|Дисперсия генеральной совокупности собранных значений за указанный период вычисления.|
|[varsamp](#varsamp)|Выборочная дисперсия собранных значений за указанный период вычисления.|

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

[comment]: # ({2acead3e-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 см. [здесь](/manual/config/triggers/expression#time-shift).

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

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

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

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

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

[comment]: # ({2844b0b7-f5993b4c})
##### avg(/host/key,(sec|#num)<:time shift>) {#avg}

Среднее значение элемента данных за указанный период вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Параметры: см. [общие параметры](#common-parameters).

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

Примеры:

```default
avg(/host/key,1h) #вычислить среднее значение за последний час до текущего момента
avg(/host/key,#5) #вычислить среднее значение по пяти последним значениям
avg(/host/key,1h:now-1d) #вычислить среднее значение за один час в интервале от 25 часов назад до 24 часов назад от текущего момента
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #вычислить среднюю загрузку процессора для всех серверов MySQL
avg(/host/proc.num,5m)>300 #триггер сработает, если среднее количество процессов за последние 5 минут превышало 300
```

[comment]: # ({/2844b0b7-f5993b4c})

[comment]: # ({ae55eda6-af24d13f})
##### bucket_percentile(item filter,time period,percentage) {#bucket-percentile}

Вычисляет процентиль по бакетам гистограммы.<br>

Параметры: 

-   **фильтр элементов данных** — см. [фильтр элементов данных](/manual/config/triggers/expression/aggregate/foreach#item-filter-syntax);<br>
-   **период времени** — см. [период времени](/manual/config/triggers/expression/aggregate/foreach#time-period);<br>
-   **процент** — процент (0-100).

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

-   Поддерживается только в вычисляемых элементах данных;
-   Эта функция является псевдонимом для `histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1))`.

Примеры:

```default
bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #вычислить 95-й процентиль времени отклика за 5 минут
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #вычислить 99-й процентиль задержки API
```

[comment]: # ({/ae55eda6-af24d13f})

[comment]: # ({4520f3ef-3c498650})
##### count(func_foreach(item filter,<time period>),<operator>,<pattern>) {#count}

Количество значений в массиве, возвращаемом функцией foreach.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Параметры: 

-   **func_foreach** — функция foreach, для которой необходимо подсчитать количество возвращаемых значений. Подробности см. в разделе [функции foreach](/manual/config/triggers/expression/aggregate/foreach). Обратите внимание, что count_foreach и bucket_rate_foreach поддерживают [дополнительные параметры](/manual/config/triggers/expression/aggregate/foreach#additional-parameters).
-   **item filter** — см. [фильтр элементов данных](/manual/config/triggers/expression/aggregate/foreach#item-filter-syntax);<br>
-   **time period** — см. [период времени](/manual/config/triggers/expression/aggregate/foreach#time-period);<br>
-   **operator** (должен быть заключён в двойные кавычки). Поддерживаемые `operators`:<br>*eq* — равно<br>*ne* — не равно<br>*gt* — больше<br>*ge* — больше или равно<br>*lt* — меньше<br>*le* — меньше или равно<br>*like* — совпадает, если содержит шаблон (с учётом регистра)<br>*bitand* — побитовое И<br>*regexp* — чувствительное к регистру совпадение с регулярным выражением, заданным в `pattern`<br>*iregexp* — нечувствительное к регистру совпадение с регулярным выражением, заданным в `pattern`<br>
-   **pattern** — требуемый шаблон (строковые аргументы должны быть заключены в двойные кавычки); поддерживается, если *operator* указан в третьем параметре.

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

-   Использование **count()** с функцией foreach, связанной с историей данных (max_foreach, avg_foreach и т. д.), может повлиять на производительность, тогда как использование **exists_foreach()**, работающей только с данными конфигурации, такого эффекта не оказывает.
-   Необязательные параметры *operator* или *pattern* нельзя оставлять пустыми после запятой, их можно только полностью опустить.
-   Если в качестве третьего параметра используется *bitand*, четвёртый параметр `pattern` можно указать как два числа, разделённые символом '/': **number_to_compare_with/mask**. count() вычисляет результат операции "побитовое И" для значения и *mask* и сравнивает результат с *number_to_compare_with*. Если результат "побитового И" равен *number_to_compare_with*, значение учитывается.<br>Если *number_to_compare_with* и *mask* равны, можно указать только *mask* (без '/').
-   Если в качестве третьего параметра используется *regexp* или *iregexp*, четвёртый параметр `pattern` может быть обычным или [глобальным](/manual/regular_expressions#global-regular-expressions) (начинающимся с '@') регулярным выражением. В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения. Для целей сопоставления по regexp значения с плавающей точкой всегда будут представлены с 4 десятичными знаками после '.'. Также обратите внимание, что для больших чисел различие между десятичным представлением (хранимым в базе данных) и двоичным представлением (используемым сервером Zabbix) может влиять на 4-й десятичный знак.

Примеры:

```default
count(max_foreach(/*/net.if.in[*],1h)) #calculate the number of net.if.in items that received data in the last hour until now
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculate the number of file systems with over 95% of disk space used
```

[comment]: # ({/4520f3ef-3c498650})

[comment]: # ({3ba37963-f3ad7158})
##### histogram_quantile(quantile,bucket1,value1,bucket2,value2,...) {#histogram-quantile}

Вычисляет φ-квантиль по корзинам гистограммы.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *bucket_rate_foreach*.

Параметры: 

-   **quantile** — 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** — вручную введённые пары (>=2) параметров или ответ [bucket_rate_foreach](/manual/config/triggers/expression/aggregate/foreach).

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

-   Поддерживается только в вычисляемых элементах данных;
-   Функционально соответствует '[histogram\_quantile](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram-quantile)' в PromQL;
-   Возвращает -1, если значения последней корзины 'Infinity' (*"+inf"*) равны 0.

Примеры:

```default
histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
```

[comment]: # ({/3ba37963-f3ad7158})

[comment]: # ({b14d0146-c8e3133a})
##### item_count(item filter) {#item-count}

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

Параметр: 

-   **item filter** — критерий выбора элементов данных; допускает ссылки по группе узлов сети, узлу сети, ключу элемента данных и тегам. Поддерживаются подстановочные знаки. Подробнее см. в разделе [item filter](/manual/config/triggers/expression/aggregate/foreach#item-filter-syntax).<br>

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

-   Поддерживается только в вычисляемых элементах данных;
-   Работает как псевдоним функции *count(exists_foreach(item_filter))*.

Примеры:

```default
item_count(/*/agent.ping?[group="Host group 1"]) #вычисляет количество узлов сети с элементом данных agent.ping в "Host group 1"
```

[comment]: # ({/b14d0146-c8e3133a})

[comment]: # ({356d9069-88a54099})
##### kurtosis(/host/key,(sec|#num)<:time shift>) {#kurtosis}

«Хвостатость» распределения вероятностей собранных значений в пределах заданного периода вычисления. См. также: [Kurtosis](https://en.wikipedia.org/wiki/Kurtosis).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
kurtosis(/host/system.cpu.util[,user],5m)>5 #срабатывание триггера при резких всплесках загрузки CPU за 5 минут
```

[comment]: # ({/356d9069-88a54099})

[comment]: # ({98a81503-bfb43a27})
##### mad(/host/key,(sec|#num)<:сдвиг времени>) {#mad}

Медианное абсолютное отклонение собранных значений в пределах заданного периода вычисления. См. также: [Медианное абсолютное отклонение](https://en.wikipedia.org/wiki/Median_absolute_deviation).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #триггер, если последнее значение загрузки CPU является статистически значимым
```

[comment]: # ({/98a81503-bfb43a27})

[comment]: # ({e93a3513-5882010b})
##### max(/host/key,(sec|#num)<:time shift>) {#max}

Наибольшее значение элемента данных в пределах заданного периода вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
max(/host/key,1h) - min(/host/key,1h) #вычислить разницу между максимальным и минимальным значениями за последний час до текущего момента (дельта значений)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #вернуть наибольшее использование диска среди всех Linux-серверов
```

[comment]: # ({/e93a3513-5882010b})

[comment]: # ({cfe7b652-ffd1e499})
##### min(/host/key,(sec|#num)<:time shift>) {#min}

Наименьшее значение элемента данных в пределах заданного периода вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
max(/host/key,1h) - min(/host/key,1h) #вычислить разницу между максимальным и минимальным значениями за последний час до текущего момента (дельта значений)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #вернуть минимальное состояние работоспособности для любого интерфейса среди всех Linux-серверов
```

[comment]: # ({/cfe7b652-ffd1e499})

[comment]: # ({f9d7543b-6b6fb273})
##### skewness(/host/key,(sec|#num)<:time shift>) {#skewness}

Асимметрия распределения вероятностей собранных значений в пределах заданного периода вычисления. См. также: [Skewness](https://en.wikipedia.org/wiki/Skewness).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
skewness(/host/vm.memory.size[used],5m)<-20 #триггер при внезапных отрицательных падениях, указывающих на сбои/перезапуски
```

[comment]: # ({/f9d7543b-6b6fb273})

[comment]: # ({7e32d94e-11c2ea25})
##### stddevpop(/host/key,(sec|#num)<:time shift>) {#stddevpop}

Среднеквадратичное отклонение генеральной совокупности для собранных значений в пределах заданного периода вычисления. См. также: [Стандартное отклонение](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
stddevpop(/host/system.cpu.util[,user],10m)>7 #триггер, если использование CPU сильно колеблется (среднеквадратичное отклонение генеральной совокупности выше 7 за 10 минут)
```

[comment]: # ({/7e32d94e-11c2ea25})

[comment]: # ({23ca7fe4-1db77c44})
##### stddevsamp(/host/key,(sec|#num)<:time shift>) {#stddevsamp}

Выборочное стандартное отклонение собранных значений в пределах заданного периода вычисления. См. также: [Стандартное отклонение](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Для работы этой функции требуется как минимум два значения данных.

Примеры:

```default
stddevsamp(/host/system.cpu.util[,user],10m)>7 #триггер, если использование CPU сильно колеблется (выборочное стандартное отклонение выше 7 за 10 минут)
```

[comment]: # ({/23ca7fe4-1db77c44})

[comment]: # ({89b5406f-0ecf79eb})
##### sum(/host/key,(sec|#num)<:time shift>) {#sum}

Сумма собранных значений в пределах заданного периода вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #вычислить общий входящий сетевой трафик для всех Linux-серверов
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #вычислить общий объем дискового пространства для всех MySQL-серверов
sum(last_foreach(/*/net.dns[*,*,*])) #вычислить общее количество успешных DNS-проверок
```

[comment]: # ({/89b5406f-0ecf79eb})

[comment]: # ({907627c8-6f6556f2})
##### sumofsquares(/host/key,(sec|#num)<:time shift>) {#sumofsquares}

Сумма квадратов собранных значений в пределах заданного периода вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
sumofsquares(/host/calculated.net.if.rate,1m) #сумма квадратов для скорости сетевого трафика (входящий и исходящий)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #сумма квадратов последних значений входящего сетевого трафика по всем Linux servers
```

[comment]: # ({/907627c8-6f6556f2})

[comment]: # ({04d271f7-d299bd33})
##### varpop(/host/key,(sec|#num)<:time shift>) {#varpop}

Дисперсия генеральной совокупности собранных значений в пределах заданного периода вычисления. См. также: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Примеры:

```default
varpop(/host/system.cpu.util[,user],10m)>50 #триггер, если использование CPU сильно колеблется (дисперсия выше 50 за 10 минут)
```

[comment]: # ({/04d271f7-d299bd33})

[comment]: # ({9c60c2c9-b1bc041c})
##### varsamp(/host/key,(sec|#num)<:time shift>) {#varsamp}

Выборочная дисперсия собранных значений в пределах заданного периода вычисления. См. также: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемая [функция foreach](/manual/config/triggers/expression/aggregate/foreach): *last_foreach*.

Параметры: см. [общие параметры](#common-parameters).

Для работы этой функции требуется как минимум два значения данных.

Примеры:

```default
varsamp(/host/system.cpu.util[,user],10m)>50 #триггер, если использование CPU сильно колеблется (выборочная дисперсия выше 50 за 10 минут)
```

[comment]: # ({/9c60c2c9-b1bc041c})

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

[comment]: # ({/ba58f5e4-541616fc})
