streamstats
Описание
Выполняет статистические операции над данными в потоковом режиме.
Синтаксис
streamstats <functions-expression> ["," <functions-expression>]
[<by_expression>] [<onchangeExpression>] [<beforeExpression>] [<afterExpression>] [<windowExpression>]
Обязательные аргументы
Обязательно использование хотя бы одной из функций:
<functions-expression>
Описание см. в команде stats.
Опциональные аргументы
| Параметр | Синтаксис | По умолчанию | Описание |
|---|---|---|---|
<by_expression> | <by_field> ["," <by_field> ...] | Имя поля (или полей) для группировки значений. | |
<beforeExpression> | reset_before=(<eval-expression>) | false | eval выражение, возвращающее boolean. Сбрасывает накопленную статистику до подсчета для текущего события, если выражение равно true. |
<afterExpression> | reset_after=(<eval-expression>) | false | eval выражение, возвращающее boolean. Сбрасывает накопленную статистику после подсчета для текущего события, если выражение равно true. |
<onchangeExpression> | reset_on_change=(<boolean>) | false | Сбрасывает накопленную статистику, если значение хотя бы одного by field изменилось. |
<windowExpression> | window=(<int>) | 0 (неограниченно) | Максимальное количество событий, по которым будет считаться статистика. |
Примеры запросов
Данные примеры показывают, как streamstats считает статистику по мере чтения событий и как на поведение команды влияют by, reset_before, reset_after, window и reset_on_change.
Пример 1
В данном примере streamstats считает нарастающее среднее amount отдельно для каждого server_name, а eventstats добавляет итоговое среднее по всей группе для сравнения с потоковым значением.
source server_warnings
| streamstats avg(amount) as stream_avg by server_name
| eventstats avg(amount) as event_avg by server_name
Пример 2
В данном примере сумма summ накапливается по полю number, а при выполнении условия reset_after статистика сбрасывается уже после обработки текущего события.
| makeresults count=10 shownumbers=true
| streamstats sum(number) as summ reset_after = (number==sqrt(9))
Пример 3
В данном примере запрос одновременно считает среднее и количество событий, но при выполнении условия reset_before накопленные значения сбрасываются до обработки текущей строки.
source server_warnings
| streamstats avg(amount) as stream_avg, count reset_before = (amount==abs(-16))
Пример 4
В данном примере команда использует скользящее окно из трех последних событий, поэтому статистика рассчитывается не по всей истории, а только по ближайшим записям.
source server_warnings
| streamstats avg(amount) as stream_avg, count window=3
Пример 5
В данном примере счетчик ведется отдельно по action, сбрасывается при изменении значения поля группировки и дополнительно может быть обнулен до подсчета по условию reset_before.
source apps
| streamstats count by action reset_on_change=true reset_before=(computer == "vb.host2")