使用 spath 读取 splunk jsonArray

read splunk jsonArray with spath

这是我的设置:

| makeresults
| eval _raw="[[\"A\",\"AA\"],[\"B\",\"BB\"],[\"C\",\"CC\"]]"
|spath  path={}{} output=data

我想要 3 个不同的元组,A 在一起,B 在一起,C 在一起, 但我的要求都在一条线上。

我可以做类似

的事情
|spath  path={0}{} output=data0
|spath  path={1}{} output=data1
|spath  path={2}{} output=data2

但我正在寻找更有活力的东西:)

有什么想法吗?

假设您的数据不包含任何其他 JSON,您可以使用正则表达式来提取每个条目并以这种方式进行处理。检查这个例子。

| makeresults count=5
| eval random=random()
| eval _raw="[[\"A\",\"AA\"],[\"B\",\"BB\"],[\"C\",\"CC\"]]"
| rex max_match=0 field=_raw "(?<d>\[[^\[\]]+\])"
| mvexpand d
| streamstats count by random
| eval data_{count}=d
| fields _time, data_*, random
| stats values(_time) as _time, values(*) AS * by random
| fields - random

我为 LOL 添加了一些额外的复杂性。 streamstats 用于获取增量计数器,然后用于按 data_0data_1 等顺序创建一些新的列名...开始并包含在活动中,因此您可以在最后加入所有拆分活动。