Перейти к основному содержимому
Версия: 5.3

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>)falseeval выражение, возвращающее boolean. Сбрасывает накопленную статистику до подсчета для текущего события, если выражение равно true.
<afterExpression>reset_after=(<eval-expression>)falseeval выражение, возвращающее 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")