Splunk Search

evaluate mathematical expression in string

knielsen
Contributor

Hi,

Is there a fast way of evaluating the result a string like "42 + 23" as a new field?

Background: a log file that contains answer time and a list of lengths. I want to calculate the p98(answer time) by summed lengths of events. Right now I'm doing the eval id=_cd+splunk_server | makemv delim="," rl_list | eventstats sum(rl_list) as total_rl by id trick, but I'm wondering if there is a better solution to get a sum of list elements per event.

Thanks,
Kai.

Tags (1)
0 Karma

knielsen
Contributor

Hmm, I just played with

base search | makemv delim="," rl | stats sum(rl) as total values(answertime) as answertime values(whateverIwanttokeep) as whatever by _raw | fields - _raw

That might be faster than my eventstats approach.

A simple function to evaluate a string with math in it does not seem to exist. 🙂

0 Karma

niketn
Legend

If you do not want all fields , but only specific one after stats, stats(transforming) would be better than eventstats(streaming) command. You should covert your own answer and accept the same.

You could have used map function in my example to evaluate expression for each field passed on through map command but it would be too expensive and may hit limit as well.

Also as far as a command/function not existing at present, you can definitely code Custom Commands using Python if you have the expertise.

____________________________________________
| makeresults | eval message= "Happy Splunking!!!"
0 Karma

niketn
Legend

@knielsen, your query, data and question seem to be confusing. Can you add more details? Whatis the field name of string that has data like "42+23"? Based on what you have asked in your question if you just want the sum of a string expression, you would need to create a return like below

| makeresults 
| eval result= 
    [| makeresults 
    | eval data="43+23" 
    | return $data ]
____________________________________________
| makeresults | eval message= "Happy Splunking!!!"
0 Karma

knielsen
Contributor

Hmm, I can't make your result work in a real search. I don't have the value data in inner search right?

Ok, sometimes I speak gibberish. Back: my events have a string field, let's keep it short, "rl". This contains either one integer or a list of comma separated integers. I want to calculate the total of that list for each event and keep other fields of the event as well.

Since I can convert the comma separated "1,2,3,4,5..." with rex or replace into "1+2+3+4+5+6...." I was wondering if there is a simple way to feed that string into a function to get the total.

0 Karma
Get Updates on the Splunk Community!

Enterprise Security Content Update (ESCU) | New Releases

In December, the Splunk Threat Research Team had 1 release of new security content via the Enterprise Security ...

Why am I not seeing the finding in Splunk Enterprise Security Analyst Queue?

(This is the first of a series of 2 blogs). Splunk Enterprise Security is a fantastic tool that offers robust ...

Index This | What are the 12 Days of Splunk-mas?

December 2024 Edition Hayyy Splunk Education Enthusiasts and the Eternally Curious!  We’re back with another ...