Splunk: поиск SPL с несколькими статистическими данными - PullRequest
0 голосов
/ 17 марта 2020

у меня есть события ниже

event_a имеет time_a и MAS_A поля

event_b имеет time_b и MAS_B поля

event_ c имеет time_c и MAS_C поля

sourcetype="app" eventtype in (event_a,event_b,event_c) 
| stats avg(time_a) as "Avg_Res_Time_a" BY MAS_A 
| eval Avg_Res_Time_a=round('Avg_Res_Time_a',2) 

Вывод, который я получаю из поиска выше, это два поля MAS_A и Avg_Res_Time_a

Как я могу получить 4 поля, как показано ниже

MAS_A_B_C (должен содержать значения из MAS_A, MAS_ C, MAS_ C)

Avg_Res_Time_a (статистика avg (time_a) как "Avg_Res_Time_a" BY MAS_A)

Avg_Res_Time_b (статистика avg (time_b) как "Avg_Res_Time_b" BY MAS_B)

Avg_Res_Time_c (статистика avg (time_ c) как "Avg_Res_Time_ c" BY MAS_ C)

Примеры событий:

04-03-2020 11.31.19 OFF   performance [WebContainer : 78]: USER_ID=HEIS MAS_A=3 TIME_A=5.898
04-03-2020 02.33.42 OFF   performance [WebContainer : 29]: USER_ID=MONA MAS_B=2 TIME_B=1.18 MAS_C=2 TIME_C=2.87
04-03-2020 12.31.19 OFF   performance [WebContainer : 30]: USER_ID=HEIB MAS_A=2 TIME_A=1.22
04-03-2020 02.38.42 OFF   performance [WebContainer : 33]: USER_ID=MONA MAS_B=3 TIME_B=2.20 MAS_C=20 TIME_C=29.03

Ожидаемый результат

MAS_A_B_C   Avg_Res_Time_a   Avg_Res_Time_b   Avg_Res_Time_c
2           1.22             1.18             2.87
3           5.898            2.20       
20                                            29.03

1 Ответ

0 голосов
/ 18 марта 2020

Немного сложно без достаточного количества примеров событий, но вы можете попробовать использовать appendpipe.

sourcetype="app" eventtype in (event_a,event_b,event_c) 
| appendpipe [ where isnotnull(MAS_a) | stats avg(count) AS Avg_Res_Time_a by MAS_a ]
| appendpipe [ where isnotnull(MAS_b) | stats avg(count) AS Avg_Res_Time_b by MAS_b ]
| appendpipe [ where isnotnull(MAS_c) | stats avg(count) AS Avg_Res_Time_c by MAS_c ]
| stats values(Avg*) as Avg*
...