<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: mvexpand multiple multi-value fields [MACRO BASED SOLUTION] in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/mvexpand-multiple-multi-value-fields-MACRO-BASED-SOLUTION/m-p/449802#M127356</link>
    <description>&lt;H3&gt;MACRO BASED SOLUTION&lt;/H3&gt;

&lt;P&gt;Macro Name:&lt;BR /&gt;
&lt;CODE&gt;my_mvexpand(2)&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;Macro Arguments:&lt;BR /&gt;
&lt;CODE&gt;first_mv_field,other_mv_fields&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;Macro Definition:&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;| fields - _raw 
| eval fields_value=$first_mv_field$, 
    fields_list="$first_mv_field$".",".replace("$other_mv_fields$"," ",",") 
| foreach $other_mv_fields$ 
    [ eval fields_value=mvzip(fields_value,'&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;') ] 
| mvexpand fields_value 
| eval fields_value=split(fields_value,","),
    fields_list=split(fields_list,",") 
| eval _raw=mvzip(fields_list,fields_value,"_X==") 
| extract pairdelim="\n" kvdelim="==" 
| fields - _raw,fields_list,fields_value 
| rename *_X as *
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;macros.conf&lt;/STRONG&gt; &lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;[my_mvexpand(2)]
args = first_mv_field,other_mv_fields
definition = | fields - _raw \
| eval fields_value=$first_mv_field$, \
    fields_list="$first_mv_field$".",".replace("$other_mv_fields$"," ",",") \
| foreach $other_mv_fields$ \
    [ eval fields_value=mvzip(fields_value,'&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;') ] \
| mvexpand fields_value \
| eval fields_value=split(fields_value,","),\
    fields_list=split(fields_list,",") \
| eval _raw=mvzip(fields_list,fields_value,"_X==") \
| extract pairdelim="\n" kvdelim="==" \
| fields - _raw,fields_list,fields_value \
| rename *_X as *
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 09 Feb 2019 08:38:11 GMT</pubDate>
    <dc:creator>dmanojbaba</dc:creator>
    <dc:date>2019-02-09T08:38:11Z</dc:date>
    <item>
      <title>mvexpand multiple multi-value fields [MACRO BASED SOLUTION]</title>
      <link>https://community.splunk.com/t5/Splunk-Search/mvexpand-multiple-multi-value-fields-MACRO-BASED-SOLUTION/m-p/449801#M127355</link>
      <description>&lt;P&gt;There are already several Splunk Answers around mvexpand multiple multi-value fields.&lt;/P&gt;

&lt;P&gt;&lt;A href="https://answers.splunk.com/answers/25653/mvexpand-multiple-multi-value-fields.html"&gt;https://answers.splunk.com/answers/25653/mvexpand-multiple-multi-value-fields.html&lt;/A&gt;&lt;BR /&gt;
&lt;A href="https://answers.splunk.com/answers/123887/how-to-expand-multiple-multivalue-fields.html"&gt;https://answers.splunk.com/answers/123887/how-to-expand-multiple-multivalue-fields.html&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Some of them also helped in improving Splunk Docs (Example 3)&lt;BR /&gt;
&lt;A href="https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Mvexpand#Examples"&gt;https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Mvexpand#Examples&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Now, how can it  auto-scale horizontally for any number of fields?&lt;/P&gt;

&lt;P&gt;Here is a macro based solution for this question.&lt;/P&gt;

&lt;P&gt;Macro Name:&lt;BR /&gt;
&lt;CODE&gt;my_mvexpand(2)&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;Usage:&lt;BR /&gt;
&lt;CODE&gt;my_mvexpand(2)&lt;/CODE&gt; macro takes two arguments.&lt;BR /&gt;
First argument is one of the multi-value field, which you would like to expand.&lt;BR /&gt;
Second argument takes the list of other multi-value fields (comma OR space separated), which you would like to zip &amp;amp; expand along with mvfield in the First argument.&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;### Syntax:
`my_mvexpand("mv_field_1","mv_field_2,mv_field_3")`                //comma separated second argument
`my_mvexpand("mv_field_1","mv_field_2 mv_field_3 mv_field_4")`  //space separated second argument

### Example 1:
| makeresults 
| eval f1=split("a1,a2,a3",",") 
| eval f2=split("b1,b2,b3",",") 
| eval f3=split("c1,c2,c3",",")
    `my_mvexpand(f1,"f2 f3")`

### Example 2:
| makeresults 
| eval x="another_single_value_field" 
| eval f1=split("a1,a2,a3",",") 
| eval f2=split("b1,b2,b3",",") 
| eval f3=split("c1,c2,c3",",") 
| eval f4=split("d1,d2,d3",",")
    `my_mvexpand("f1","f2,f3,f4")`
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;Please note, similar to other solutions already answered in Splunk Answers, this macro based solution works only with mvfields of same cardinality (i.e. mvfields having same mvcount)&lt;/P&gt;

&lt;P&gt;Feel free to use and enhance &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; &lt;/P&gt;</description>
      <pubDate>Fri, 08 Feb 2019 23:40:30 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/mvexpand-multiple-multi-value-fields-MACRO-BASED-SOLUTION/m-p/449801#M127355</guid>
      <dc:creator>dmanojbaba</dc:creator>
      <dc:date>2019-02-08T23:40:30Z</dc:date>
    </item>
    <item>
      <title>Re: mvexpand multiple multi-value fields [MACRO BASED SOLUTION]</title>
      <link>https://community.splunk.com/t5/Splunk-Search/mvexpand-multiple-multi-value-fields-MACRO-BASED-SOLUTION/m-p/449802#M127356</link>
      <description>&lt;H3&gt;MACRO BASED SOLUTION&lt;/H3&gt;

&lt;P&gt;Macro Name:&lt;BR /&gt;
&lt;CODE&gt;my_mvexpand(2)&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;Macro Arguments:&lt;BR /&gt;
&lt;CODE&gt;first_mv_field,other_mv_fields&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;Macro Definition:&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;| fields - _raw 
| eval fields_value=$first_mv_field$, 
    fields_list="$first_mv_field$".",".replace("$other_mv_fields$"," ",",") 
| foreach $other_mv_fields$ 
    [ eval fields_value=mvzip(fields_value,'&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;') ] 
| mvexpand fields_value 
| eval fields_value=split(fields_value,","),
    fields_list=split(fields_list,",") 
| eval _raw=mvzip(fields_list,fields_value,"_X==") 
| extract pairdelim="\n" kvdelim="==" 
| fields - _raw,fields_list,fields_value 
| rename *_X as *
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;macros.conf&lt;/STRONG&gt; &lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;[my_mvexpand(2)]
args = first_mv_field,other_mv_fields
definition = | fields - _raw \
| eval fields_value=$first_mv_field$, \
    fields_list="$first_mv_field$".",".replace("$other_mv_fields$"," ",",") \
| foreach $other_mv_fields$ \
    [ eval fields_value=mvzip(fields_value,'&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;') ] \
| mvexpand fields_value \
| eval fields_value=split(fields_value,","),\
    fields_list=split(fields_list,",") \
| eval _raw=mvzip(fields_list,fields_value,"_X==") \
| extract pairdelim="\n" kvdelim="==" \
| fields - _raw,fields_list,fields_value \
| rename *_X as *
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 09 Feb 2019 08:38:11 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/mvexpand-multiple-multi-value-fields-MACRO-BASED-SOLUTION/m-p/449802#M127356</guid>
      <dc:creator>dmanojbaba</dc:creator>
      <dc:date>2019-02-09T08:38:11Z</dc:date>
    </item>
  </channel>
</rss>

