Hello,
I would like to parse the array called values that contains 45 and 0
I want to rename them then 45 as name and 0 as value
{ [-]
dsnames: [ [+]
]
dstypes: [ [+]
]
host: test
interval: 60
plugin: snmp
plugin_instance:
time: 1510070934.341
type: ps_count
type_instance: fval3-cp-23800-1_vs30
values: [ [-]
45
0
]
}
Can you help me please?
Thank you in advance
@mkamal18, please try the following run anywhere search. Since you are not worried about dsnames and dstypes JSON nodes, I have taken them out while creating test data as per sample provided. This implies actual JSON field name for values
, on using spath
command will change from the one used in this example.
| makeresults
| eval _raw="{
\"host\": \"test\",
\"interval\": 60 ,
\"plugin\": \"snmp\",
\"plugin_instance\": {
\"time\": \"1510070934.341\",
\"type\": \"ps_count\",
\"type_instance\": \"fval3-cp-23800-1_vs30\",
\"values\": [45,0]}}"
| spath
| rename "plugin_instance.values{}" AS "values"
| eval name=mvindex(values,0)
| eval value=mvindex(values,1)
You can pipe spath
command to your raw data to get JSON fields extracted. You will notice the *values{}
field will be multi-valued array. You would need to rename according to its name to simplified name such as values
. Finally use the mvindex()
evaluation function to pull values at 0 and 1 index.
<YourBaseSearch>
| spath
| rename "plugin_instance.values{}" AS "values"
| eval name=mvindex(values,0)
| eval value=mvindex(values,1)
PS: Please change the rename command as per actual original field name for *values{}
@mkamal18, please try the following run anywhere search. Since you are not worried about dsnames and dstypes JSON nodes, I have taken them out while creating test data as per sample provided. This implies actual JSON field name for values
, on using spath
command will change from the one used in this example.
| makeresults
| eval _raw="{
\"host\": \"test\",
\"interval\": 60 ,
\"plugin\": \"snmp\",
\"plugin_instance\": {
\"time\": \"1510070934.341\",
\"type\": \"ps_count\",
\"type_instance\": \"fval3-cp-23800-1_vs30\",
\"values\": [45,0]}}"
| spath
| rename "plugin_instance.values{}" AS "values"
| eval name=mvindex(values,0)
| eval value=mvindex(values,1)
You can pipe spath
command to your raw data to get JSON fields extracted. You will notice the *values{}
field will be multi-valued array. You would need to rename according to its name to simplified name such as values
. Finally use the mvindex()
evaluation function to pull values at 0 and 1 index.
<YourBaseSearch>
| spath
| rename "plugin_instance.values{}" AS "values"
| eval name=mvindex(values,0)
| eval value=mvindex(values,1)
PS: Please change the rename command as per actual original field name for *values{}
Perfect it works, Thanks man!! 🙂
Anytime! Do think of us in case you need further help with your Splunk queries 🙂
Hi @mkamal18,
Use values{}
to access values field.
Please check my sample search.
| makeresults
| eval _raw="{\"values\": [\"45\",\"0\"] }"
| spath
| rename values{} as values
Happy Splunking