Splunk Search
Highlighted

How to create a conditional stats search based on a field value?

Explorer

Hi,
I am trying to write a conditional stats command based on a field value.
So for example:
I have a field called stat_command

Name, No., stat_command         
Name1, 5, latest
Name2, 12, avg
Name3, 13, max

So for statcommand = latest, I want to run | stats latest(Number)
for stat
command = avg, I want to run | stats avg(Number)

Is there a way to do this in a search-efficient way without doing many appends?
I have tried using macros, map, and case statements but have not had much luck.

Thanks

0 Karma
Highlighted

Re: How to create a conditional stats search based on a field value?

SplunkTrust
SplunkTrust

@ronny_wang,

Does this approach work for you ?

    | eventstats latest(No) as _latest,avg(No) as _avg,max(No) as _Max
    | eval value=case(stat_command=="latest",_latest,stat_command=="avg",_avg,stat_command=="max",_Max)

Get all types of aggregate values using stats and select only the value based on your condition

Highlighted

Re: How to create a conditional stats search based on a field value?

Explorer

Hi, As i had to split by a number of fields, including the name field, I was able to solve this with the following

| stats latest(Value) AS latest_value 
avg(Value) AS avg_value
max(Value) AS max_value
min(Value) AS min_value
count(Value) AS count_value
latest(_time) AS event_time_epoch
BY Name
| eval metric_value=case(stats_command="latest", latest_value,
stats_command="avg", avg_value,
stats_command="min", min_value,
stats_command="max", max_value,
stats_command="count", count_value,
1=1, Value)
0 Karma
Highlighted

Re: How to create a conditional stats search based on a field value?

Explorer

Hi,

As i had to split by a number of fields, including the Name field, we were able to do the following:
| stats latest(Value) AS latestvalue
avg(Value) AS avg
value
max(Value) AS maxvalue
min(Value) AS min
value
count(Value) AS count_value
BY Name

| eval value=case(stats_command="latest", latest_value,
stats_command="avg", avg_value,
stats_command="min", min_value,
stats_command="max", max_value,
stats_command="count", count_value,
1=1, Value)

View solution in original post

0 Karma
Highlighted

Re: How to create a conditional stats search based on a field value?

SplunkTrust
SplunkTrust

@ronny_wang If your problem is resolved, please accept an answer to help future readers.

---
If this reply helps you, an upvote would be appreciated.
0 Karma