Как создать строки для несуществующих временных интервалов?

Я создал таблицу, как это:

+----------+---------+---------+-------+
| _time    | field_1 | field_2 | count |
+----------+---------+---------+-------+
| 08:00:00 | A       | 1       | 2     |
+----------+---------+---------+-------+
| 08:00:00 | B       | 1       | 4     |
+----------+---------+---------+-------+
| 08:00:03 | B       | 3       | 1     |
+----------+---------+---------+-------+
| 08:00:03 | A       | 2       | 3     |
+----------+---------+---------+-------+

Я хочу знать: каков средний и максимальный счет в комбинации (field_1+field_2) в секунду. Проблема в том, что _time отсутствует несколько секунд, поэтому stats count результат дает мне только агрегированные результаты за существующие периоды времени.

Как я могу расширить эту таблицу, чтобы включить в нее каждое пропущенное время, просто заполнив счетчик =0, для каждой комбинации (field_1+field_2)? Пока я могу это сделать, я могу получить результат просто stats avg(count) max(count) by field_1 field_2,

2 ответа

Я также разместил свой вопрос здесь: https://answers.splunk.com/answers/624043/how-to-produce-rows-for-non-existing-time-buckets.html, и я получил хороший ответ, чтобы заполнить недостающие временные интервалы.

<your base search> 
| eval field= field_1 + "|" + field_2 
| timechart limit=0 span=1s count by field
| fillnull value=0
| untable _time field count 
| eval temp = split(field,"|") 
| eval field_1 = mvindex(temp,0) 
| eval field_2 = mvindex(temp,1) 
| stats sum(count) as count by field_1 field_2 _time | sort- _time

Это будет трудно отладить без данных. Но вместо добавления дополнительной записи для каждой недостающей секунды для каждой комбинации field1/field2, вы можете сделать что-то вроде:

your_query
| eventstats earliest(_time) as etime, latest(_time) as ltime by field1, field2
| stats sum(count) as c, max(count) as maxCount, values(etime) as etime, values(ltime) as ltime by field1, field2
| eval avgCount = c/(ltime-etime)
| table field1, field2, avgCount, maxCount

Это позволит найти самое позднее и самое раннее время для каждой комбинации field1+field2. Затем среднее значение вычисляется вручную путем деления суммы всех подсчетов для комбинации field1+field2 на количество секунд (самое раннее).

Другие вопросы по тегам