Как создать строки для несуществующих временных интервалов?
Я создал таблицу, как это:
+----------+---------+---------+-------+
| _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 на количество секунд (самое раннее).