В Splunk можно определить группу на основе списка переменных - PullRequest
0 голосов
/ 29 мая 2020

У меня есть файл xml в операторе регистрации, в котором я извлек 3 экземпляра значения. Эти значения корректно отображаются в таблице в отдельных столбцах. Это запрос:

source="messaging-service.log" sourcetype="hidden" "createMessage MsgSource" | xmlkv  | rex max_match=0 "\<purchCostReference\>(?P<segment>[^\<]+)" | eval Segment1 =  if(isnotnull(mvindex(segment, 0)), "FirstSegment", ""), Segment2 =  if(isnotnull(mvindex(segment, 1)), "SecondSegment", ""),  Segment3 =  if(isnotnull(mvindex(segment, 2)), "ThirdSegment", "")  | table purchCostReference, eventType, Segment1, Segment2, Segment3

enter image description here

Я хотел бы, чтобы был 1 столбец, сегмент и первый сегмент, второй сегмент, третий сегмент были перечислены в столбец. Есть ли какая-либо функция Splunk, которая позволяет мне создать группу под названием «Сегмент» и добавить к ней переменные FirstSegment, SecondSegment, ThirdSegment?

UPDATE Я пробовал использовать оператор case, но он возвращает только первое значение, FirstSegment в таблице.

sourcetype... | xmlkv  | rex max_match=0 "\<purchCostReference\>(?P<segment>[^\<]+)" | eval Segments =  case(isnotnull(mvindex(segment, 0)), "FirstSegment", isnotnull(mvindex(segment, 1)), "SecondSegment", isnotnull(mvindex(segment, 2)), "ThirdSegment") |  table purchCostReference, eventType, Segments | eventstats list(Segments) as Segments by purchCostReference, eventType | sort purchCostReference, eventType

Результаты enter image description here

...