<?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: Transforms on multiple indexes of XML sources with nested, duplicate keys in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79029#M19997</link>
    <description>&lt;P&gt;Try the eval function mvzip and then  mvexpand to get one event per pool.&lt;/P&gt;</description>
    <pubDate>Mon, 08 Oct 2012 15:17:08 GMT</pubDate>
    <dc:creator>dart</dc:creator>
    <dc:date>2012-10-08T15:17:08Z</dc:date>
    <item>
      <title>Transforms on multiple indexes of XML sources with nested, duplicate keys</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79028#M19996</link>
      <description>&lt;P&gt;I would like to get a single report by combining data from 3 different data sources. However, I am running into a problem where in one of my sources there is a duplicate field name (pool_name) and I cannot figure out how to split it up. The following is my search&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;index=Masking_View OR
index=Device OR
index=Association_Info
| rename Masking_View.View_Info.stor_grpname as sg_name
| rename Masking_View.View_Info.Device.dev_name as dev_name
| rename Masking_View.View_Info.Totals.total_dev_cap_mb as total_dev_cap_mb
| rename Association_Info.sg_name as sg_name
| rename Association_Info.policy_name as policy_name
| rename Device.dev_name as dev_name
| rename Device.pool.pool_name as pool_name
| rename Device.pool.pool_alloc_percent as pool_alloc_percent
| rename Device.pool.alloc_tracks_mb as alloc_tracks_mb
| fields sg_name, dev_name, total_dev_cap_mb, policy_name, pool_name, pool_alloc_percent, alloc_tracks_mb
| transaction sg_name, dev_name
| search mail*
| stats avg(pool_alloc_percent) sum(alloc_tracks_mb) first(total_dev_cap_mb) by sg_name, policy_name, pool_name
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;My sources are XML logs that have entries with the following structure:&lt;/P&gt;

&lt;P&gt;Masking_View.log&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Masking_View&amp;gt;
  &amp;lt;View_Info&amp;gt;
    &amp;lt;stor_grpname&amp;gt;mail_SG&amp;lt;/stor_grpname&amp;gt;
    &amp;lt;Device&amp;gt;
      &amp;lt;dev_name&amp;gt;0B01&amp;lt;/dev_name&amp;gt;
    &amp;lt;/Device&amp;gt;
    &amp;lt;Totals&amp;gt;
      &amp;lt;total_dev_cap_mb&amp;gt;1024003&amp;lt;/total_dev_cap_mb&amp;gt;
    &amp;lt;/Totals&amp;gt;
  &amp;lt;/View_Info&amp;gt;
&amp;lt;/Masking_View&amp;gt;
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;Device.log&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Device&amp;gt;
    &amp;lt;dev_name&amp;gt;0B01&amp;lt;/dev_name&amp;gt;
    &amp;lt;total_tracks_mb&amp;gt;1024003&amp;lt;/total_tracks_mb&amp;gt;
    &amp;lt;written_tracks_mb&amp;gt;414798&amp;lt;/written_tracks_mb&amp;gt;
    &amp;lt;total_tracks_gb&amp;gt;1000.0&amp;lt;/total_tracks_gb&amp;gt;
    &amp;lt;written_tracks_gb&amp;gt;405.1&amp;lt;/written_tracks_gb&amp;gt;
    &amp;lt;pool_written_percent&amp;gt;41&amp;lt;/pool_written_percent&amp;gt;
    &amp;lt;pool&amp;gt;
        &amp;lt;pool_name&amp;gt;VP_FC_01&amp;lt;/pool_name&amp;gt;
        &amp;lt;alloc_tracks&amp;gt;0&amp;lt;/alloc_tracks&amp;gt;
        &amp;lt;alloc_tracks_mb&amp;gt;0&amp;lt;/alloc_tracks_mb&amp;gt;
        &amp;lt;alloc_tracks_gb&amp;gt;0.0&amp;lt;/alloc_tracks_gb&amp;gt;
        &amp;lt;pool_alloc_percent&amp;gt;0&amp;lt;/pool_alloc_percent&amp;gt;
    &amp;lt;/pool&amp;gt;
    &amp;lt;pool&amp;gt;
        &amp;lt;pool_name&amp;gt;VP_SATA_01&amp;lt;/pool_name&amp;gt;
        &amp;lt;alloc_tracks&amp;gt;6636960&amp;lt;/alloc_tracks&amp;gt;
        &amp;lt;alloc_tracks_mb&amp;gt;414810&amp;lt;/alloc_tracks_mb&amp;gt;
        &amp;lt;alloc_tracks_gb&amp;gt;405.1&amp;lt;/alloc_tracks_gb&amp;gt;
        &amp;lt;pool_alloc_percent&amp;gt;41&amp;lt;/pool_alloc_percent&amp;gt;
    &amp;lt;/pool&amp;gt;
&amp;lt;/Device&amp;gt;
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;Association_Info.log&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;&amp;lt;Association_Info&amp;gt;
    &amp;lt;sg_name&amp;gt;mail_SG&amp;lt;/sg_name&amp;gt;
    &amp;lt;policy_name&amp;gt;Tier2&amp;lt;/policy_name&amp;gt;
&amp;lt;/Association_Info&amp;gt;
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;My props.conf looks like:&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;[Masking_View]
TRUNCATE = 0
MAX_EVENTS = 1000000
SHOULD_LINEMERGE = true
KV_MODE = xml
BREAK_ONLY_BEFORE = ^\s*&amp;lt;Masking_View&amp;gt;
MUST_BREAK_AFTER = /Masking_View&amp;gt;

[Device]
TRUNCATE = 0
SHOULD_LINEMERGE = true
KV_MODE = xml
BREAK_ONLY_BEFORE = ^\s*&amp;lt;Device&amp;gt;
MUST_BREAK_AFTER = /Device&amp;gt;

[Association_Info]
TRUNCATE = 0
SHOULD_LINEMERGE = true
KV_MODE = xml
BREAK_ONLY_BEFORE = ^\s*&amp;lt;Association_Info&amp;gt;
MUST_BREAK_AFTER = /Association_Info&amp;gt;
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;I would like to have a result showing something like:&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;sg_name   policy_name   pool_name   avg(pool_alloc_percent) sum(alloc_tracks_mb)    first(total_dev_cap_mb)
mail_SG   Tier2         VP_FC_01    0                       0                       0
mail_SG   Tier2         VP_SATA_01  20.500000               414810                  1024003
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;Instead I get this:&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;sg_name   policy_name   pool_name   avg(pool_alloc_percent) sum(alloc_tracks_mb)    first(total_dev_cap_mb)
mail_SG   Tier2         VP_FC_01    20.500000               414810                  1024003
mail_SG   Tier2         VP_SATA_01  20.500000               414810                  1024003
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;Do you have any idea how to get the various pool_name sums and averages to group properly?&lt;/P&gt;</description>
      <pubDate>Wed, 03 Oct 2012 19:49:40 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79028#M19996</guid>
      <dc:creator>humbertocastro</dc:creator>
      <dc:date>2012-10-03T19:49:40Z</dc:date>
    </item>
    <item>
      <title>Re: Transforms on multiple indexes of XML sources with nested, duplicate keys</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79029#M19997</link>
      <description>&lt;P&gt;Try the eval function mvzip and then  mvexpand to get one event per pool.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Oct 2012 15:17:08 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79029#M19997</guid>
      <dc:creator>dart</dc:creator>
      <dc:date>2012-10-08T15:17:08Z</dc:date>
    </item>
    <item>
      <title>Re: Transforms on multiple indexes of XML sources with nested, duplicate keys</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79030#M19998</link>
      <description>&lt;P&gt;I could not get the mvzip to work quite right but I did solve this a different way... probably not the best method, but it gets me the results I need. If anyone is interested I was able to create the 3 sets of fields by doing the following.&lt;/P&gt;

&lt;P&gt;First create a field that is semicolon delimited then use a regex to get the fields I want. The comment system is not allowing me to post the code. So I guess that is left as an exercise for the reader.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Oct 2012 14:06:21 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Transforms-on-multiple-indexes-of-XML-sources-with-nested/m-p/79030#M19998</guid>
      <dc:creator>humbertocastro</dc:creator>
      <dc:date>2012-10-17T14:06:21Z</dc:date>
    </item>
  </channel>
</rss>

