How to have split, i tired many ways but its coming out.
Output:
| A | B | C |
| 288136957 | 1 | 66871812 |
| 288137548 | 1 | 62919303 |
| 288137548 | 2 | 69101805 |
| 288137548 | 3 | 84124302 |
| 488136313 | 1 | 66871812 |
| 488136313 | 2 | 65252707 |
| 488136313 | 3 | 65602005 |
| 488136313 | 4 | 69101805 |
Thanks for the help.
| makeresults
| eval _raw="
A B C D
288813 1 45456 car
388812 1|2|3|4 45456|12312|78978|12454 car|Rose|Toy|Bus
484784 1|2|3 12312|78978|12454 Rose|Toy|Bus"
| multikv forceheader=1
| fields - _time _raw linecount
| eval B=split(B,"|"), C=split(C,"|"), D=split(D,"|")
| eval E=mvzip(B,mvzip(C,D))
Hi @Annna,
at first you could find a different way to aggregate data using the thats command, so instead to use
| stats values(B) AS B values(C) AS C BY Ayou could use something like this:
| stats BY A B CIf this is non acceptable for you, you have to use the the mvexpand command to denormalize your table.
when you have only one field to denormalize it's easy :
| stats values(B) AS B values(C) AS C BY A
| mvexpand BThe problem is when you have two or more fields multivalue (as your case) because the order could be different than the real pair fieldB/fieldC.
So you have to aggregate B and C before stats and then split after:
| eval temp=B."|".C
| stats values(temp) AS temp BY A
| mvexpand temp
| rex field=temp "^(?<B>\d+)\|(?<C>\d+)"
| table A B CCiao.
Giuseppe
If the data be like this
| A | B | C | D |
| 288813 | 1 | 45456 | car |
| 388812 | 1 2 3 4 | 45456 12312 78978 12454 | car Rose Toy Bus |
| 484784 | 1 2 3 | 12312 78978 12454 | Rose Toy Bus |
IN above scenario how it works split for the rows.
output be like:
| A | B | C | D |
| 288813 | 1 | 45456 | car |
| 388812 | 1 | 45456 | car |
| 388812 | 2 | 12312 | Rose |
| 388812 | 3 | 78978 | Toy |
| 388812 | 4 | 12454 | Bus |
| 484784 | 1 | 12312 | Rose |
| 484784 | 2 | 78978 | Toy |
| 484784 | 3 | 12454 | Bus |
It depends on whether you have access to the data before it is put into multi-value fields
| eval temp=B."|".C."|".D
| stats values(temp) AS temp BY A
| mvexpand temp
| rex field=temp "^(?<B>[^\|]+)\|(?<C>[^\|]+)\|(?<D>[^\|]+)"
| table A B C DIf you don't, it depends if which version of splunk you are using and whether mvzip is available to you
| eval temp=mvzip(mvzip(B, C, "|"),D, "|")
| fields - B C D
| mvexpand temp
| rex field=temp "^(?<B>[^\|]+)\|(?<C>[^\|]+)\|(?<D>[^\|]+)"
| table A B C D