I have a search which outputs a table such as
apiNAME (-- this is the column head with values as below)
I want to use it passing all the values to search such as:
| stats avg(apiNAME), max(apiNAME), min(apiNAME)
I hope to see output as:
apiNAME avg max min
apiAMS 234.5 345.6 123.4
apiBMS 222.3 333.3 111.1
apiC_MS 444.4 555.5 222.2
I tried to use something like
| foreach apiNAME [eval avg=avg(<>)]
Unfortunately it didn't return the number such as 234.5
but return back as avg(apiA_MS), just a string, not the average value I expected.
I think there is something missing in your description. What field contains the metrics that you want to take the avg, max, and min of. That field cannot be both the text string you have under apiName. There has to be something else in your data that contains numbers that you omitted from your description.
Here is the original search:
index=a sourcetype=somelog | table api*MS | fieldsummary | fields field | stats values(field) as apiNAME | foreach apiNAME [eval max=max(<>)]
BTW, apiAMS is the response time so it is in the event as apiAMS=223.4
I hope to find a way to get max(apiAMS), max(apiBMS), etc. from the list of the apiNAME.
Try like this
index=a sourcetype=somelog | table api*MS | untable temp apiName response_time | stats avg(response_time), max(response_time), min(response_time) by apiName
Best way to learn is to run the search part one by one and check the output. I added field temp so that I can use it in untable command., but it seems it works without adding it.