<?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 How to transform nested json into separate rows? in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596324#M207588</link>
    <description>&lt;P&gt;Given json with hashes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;| makeresults 
| eval _raw="{\"yes\":true,\"no\":false,\"a\":{\"x\":0,\"y\":0,\"z\":0},\"c\":{\"x\":1,\"y\":2,\"z\":3},\"d\":{\"x\":1,\"y\":4,\"z\":9}}"
| spath&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"a", "c", and "d" are nested hashes. There are other fields, "yes" and "no" that are not hashes.&lt;BR /&gt;&lt;BR /&gt;What I am trying to do filter out non-hashes and then split into multiple row.&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;x&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;y&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;z&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;a&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;c&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;d&lt;/TD&gt;
&lt;TD width="25%"&gt;1&lt;/TD&gt;
&lt;TD width="25%"&gt;4&lt;/TD&gt;
&lt;TD width="25%"&gt;9&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;The tricky part is that the top level field names, "yes", "no", "a", "c", "d" are not constant. However the sub fields "x", "y", "z" are.&lt;BR /&gt;&lt;BR /&gt;Thoughts?&lt;/P&gt;</description>
    <pubDate>Wed, 04 May 2022 04:49:09 GMT</pubDate>
    <dc:creator>nvwls</dc:creator>
    <dc:date>2022-05-04T04:49:09Z</dc:date>
    <item>
      <title>How to transform nested json into separate rows?</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596324#M207588</link>
      <description>&lt;P&gt;Given json with hashes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;| makeresults 
| eval _raw="{\"yes\":true,\"no\":false,\"a\":{\"x\":0,\"y\":0,\"z\":0},\"c\":{\"x\":1,\"y\":2,\"z\":3},\"d\":{\"x\":1,\"y\":4,\"z\":9}}"
| spath&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"a", "c", and "d" are nested hashes. There are other fields, "yes" and "no" that are not hashes.&lt;BR /&gt;&lt;BR /&gt;What I am trying to do filter out non-hashes and then split into multiple row.&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;x&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;y&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="25%"&gt;&lt;STRONG&gt;z&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;a&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;TD width="25%"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;c&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;d&lt;/TD&gt;
&lt;TD width="25%"&gt;1&lt;/TD&gt;
&lt;TD width="25%"&gt;4&lt;/TD&gt;
&lt;TD width="25%"&gt;9&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;The tricky part is that the top level field names, "yes", "no", "a", "c", "d" are not constant. However the sub fields "x", "y", "z" are.&lt;BR /&gt;&lt;BR /&gt;Thoughts?&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 04:49:09 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596324#M207588</guid>
      <dc:creator>nvwls</dc:creator>
      <dc:date>2022-05-04T04:49:09Z</dc:date>
    </item>
    <item>
      <title>Re: Transforming nested json into separate rows</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596326#M207590</link>
      <description>&lt;P&gt;First pass...&lt;/P&gt;&lt;P&gt;This works&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults 
| eval _raw="{\"yes\":true,\"no\":false,\"a\":{\"x\":0,\"y\":0,\"z\":0},\"c\":{\"x\":1,\"y\":2,\"z\":3},\"d\":{\"x\":1,\"y\":4,\"z\":9}}"
| spath
| fields - _time _raw
| fields *.*
| foreach *.* [ eval name=mvappend("&amp;lt;&amp;lt;MATCHSEG1&amp;gt;&amp;gt;", name), name=mvdedup(name) ]
| mvexpand name
| foreach *.* [ | eval &amp;lt;&amp;lt;MATCHSEG2&amp;gt;&amp;gt;=if("&amp;lt;&amp;lt;MATCHSEG1&amp;gt;&amp;gt;"=name, '&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;', '&amp;lt;&amp;lt;MATCHSEG2&amp;gt;&amp;gt;') ]
| fields - *.*&lt;/LI-CODE&gt;&lt;P&gt;Bit clunky, there may be a better way...&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 03:05:03 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596326#M207590</guid>
      <dc:creator>bowesmana</dc:creator>
      <dc:date>2022-05-04T03:05:03Z</dc:date>
    </item>
    <item>
      <title>Re: Transforming nested json into separate rows</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596327#M207591</link>
      <description>&lt;P&gt;fields *.* only leaves the n.n fields so removes top level fields.&lt;/P&gt;&lt;P&gt;the first foreach collects the unique top level names and then expands them to create the rows&lt;/P&gt;&lt;P&gt;Second foreach collects the x, y, z values&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 03:06:57 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-transform-nested-json-into-separate-rows/m-p/596327#M207591</guid>
      <dc:creator>bowesmana</dc:creator>
      <dc:date>2022-05-04T03:06:57Z</dc:date>
    </item>
  </channel>
</rss>

