[comment]: # attributes: notoc

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

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

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

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

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

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

|Function|Description|
|--|--------|
|[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]: # ({/ac717204-ee60e21e})

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

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

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

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

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

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

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

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

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

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

Сдвиг времени полезен, когда нужно сравнить текущее среднее значение со средним значением некоторое время назад.

Примеры:

```default
avg(/host/key,1h) #calculate the average value for the last hour until now
avg(/host/key,#5) #calculate the average value of the five latest values
avg(/host/key,1h:now-1d) #calculate the average value for an hour from 25 hours ago to 24 hours ago from now
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calculate the average processor load for all MySQL servers
avg(/host/proc.num,5m)>300 #trigger if the average number of processes in the last 5 minutes has been above 300
```

[comment]: # ({/85535fd1-f5993b4c})

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

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

Параметры: 

-   **item filter** - см. [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - см. [time period](/manual/appendix/functions/aggregate/foreach#time-period);<br>
-   **percentage** - процент (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]: # ({/9237fab4-af24d13f})

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

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

Параметры: 

-   **func_foreach** - функция foreach, для которой нужно подсчитать количество возвращаемых значений. Подробности см. в разделе [функции foreach](/manual/appendix/functions/aggregate/foreach). Обратите внимание, что count_foreach и bucket_rate_foreach поддерживают [дополнительные параметры](/manual/appendix/functions/aggregate/foreach#additional-parameters).
-   **item filter** - см. [синтаксис фильтра элементов данных](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - см. [период времени](/manual/appendix/functions/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]: # ({/6e12bb62-3c498650})

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

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

Параметры:

-   **quantile** - 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** - пары параметров, введенные вручную (>=2), или ответ [bucket_rate_foreach](/manual/appendix/functions/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]: # ({/f07c0983-f3ad7158})

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

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

Параметр: 

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

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

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

Примеры:

```default
item_count(/*/agent.ping?[group="Host group 1"]) #calculate the number of hosts with the agent.ping item in "Host group 1"
```

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

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

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

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

Примеры:

```default
kurtosis(/host/system.cpu.util[,user],5m)>5 #trigger on sharp spikes of CPU utilization over 5 minutes
```

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

[comment]: # ({1b18c768-bfb43a27})
##### mad(/host/key,(sec|#num)<:time shift>) {#mad}

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

Параметры: см. [common parameters](#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]: # ({/1b18c768-bfb43a27})

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

Наибольшее значение элемента данных в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/appendix/functions/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]: # ({/9ac9dd89-5882010b})

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

Наименьшее значение элемента данных в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Поддерживаемые [функции foreach](/manual/appendix/functions/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 servers
```

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

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

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

Параметры: см. [common parameters](#common-parameters).

Примеры:

```default
skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
```

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

[comment]: # ({0b3aca57-11c2ea25})
##### stddevpop(/host/key,(sec|#num)<:сдвиг времени>) {#stddevpop}

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

Параметры: см. [common parameters](#common-parameters).

Примеры:

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

[comment]: # ({/0b3aca57-11c2ea25})

[comment]: # ({f7108164-1db77c44})
##### stddevsamp(/host/key,(sec|#num)<:сдвиг времени>) {#stddevsamp}

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

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

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

Примеры:

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

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

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

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

Параметры: см. [common parameters](#common-parameters).

Примеры:

```default
sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #calculate the total incoming network traffic for all Linux servers
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #calculate the total disk space for all MySQL servers
sum(last_foreach(/*/net.dns[*,*,*])) #calculate the total number of successful DNS checks
```

[comment]: # ({/740c263a-0ecf79eb})

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

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

Параметры: см. [common parameters](#common-parameters).

Примеры:

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

[comment]: # ({/57e39842-6f6556f2})

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

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

Параметры: см. [common parameters](#common-parameters).

Примеры:

```default
varpop(/host/system.cpu.util[,user],10m)>50 #trigger if CPU usage fluctuates heavily (variance is above 50 over 10 minutes)
```

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

[comment]: # ({146891fb-b1bc041c})
##### varsamp(/узел сети/key,(sec|#num)<:time shift>) {#varsamp}

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

Параметры: см. [common parameters](#common-parameters).

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

Примеры:

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

[comment]: # ({/146891fb-b1bc041c})

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

См. [все поддерживаемые функции](/manual/appendix/functions).

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

