When trying to collect more than one field into a MV field, the problem of correlating one entry against the entries in another field can be solved in a number of ways. stats values() will always sort/dedup the values, hence the loss of order, so using stats list() CAN be a solution if you have knowledge of your data - it will collect up to 100 max items in the list but in event sequence order, so will retain correlation between each MV field. Making composite fields is another way, as you have done with mvzip. You can make this work with any number of fields getting as complex as needed, e.g. | eval c=mvzip(mvzip(mvzip(mvzip(A, B, "##"), C, "##"), D, "##"), E, "##") In your case, I would suggest the practive of PRE-pending time, not POST-pending, as there is an immediate benefit to the output from stats value() in that the output results will be sorted in ascending time order. It has a useful benefit in that you can use mvmap to iterate results in a known order. Also, always a good idea to remove fields BEFORE mvexpand. If you don't need a field, remove it before incurring the memory cost of mvexpand. Another improvement would be to | eval session_time=mvdedup(session_time) before you mvexpand - there's no point in expanding stuff you will discard.
... View more