Вы можете сделать что-то вроде:
| makeresults
| eval x = "{\"output\":{\"date\" : \"21-09-2017\",\"failed\": [ \"fail_1\", \"fail_2\"],\"passed\": [ \"pass_1\", \"pass_2\" , \"fail_2\"]}}"
| eval x = mvappend(x,"{\"output\":{\"date\" : \"21-09-2017\",\"failed\": [ \"f_1\", \"f_2\"],\"passed\": [ \"f_1\", \"pass_2\" , \"f_2\"]}}")
| mvexpand x
| streamstats count as id
| spath input=x
| rename "output.failed{}" as failed, "output.passed{}" as passed, "output.date" as date
| mvexpand failed
| eval common_field = if(isnotnull(mvfind(passed, failed)),failed,null)
| stats values(date) as date, values(failed) as failed, values(passed) as passed, values(common_field) as common_field by id
Пример содержит 2 примера журнала событий, где неудачные и пройденные имеют общие значения.streamstats
затем используется для назначения уникального идентификатора каждому событию, поскольку я не видел уникальный идентификатор в вашем примере.spath разбирает объект json на поля.Как только это будет сделано, mvexpand
создаст одну строку для каждого значения с ошибкой.mvfind
затем используется для поиска значений ошибочного поля, которые соответствуют любому из значений переданного поля.Связанные строки затем снова объединяются с использованием уникального назначенного идентификатора.