читать spunk jsonArray с помощью spath - PullRequest
0 голосов
/ 28 января 2020

Вот мой набор:

| 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

, но я ищу что-то более динамичное c:)

Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2020

Если ваши данные не состоят из других 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_0, data_1, et c ... В начале генерируется случайное число и включается с событием, так что вы можете объединить все разделенные события в конце.

...