<?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 Large Json Array, Spath and stats in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/537130#M151824</link>
    <description>&lt;P&gt;So I have a large JSON array that is now being brought in and ingested correctly, but I cannot do any stats function on it. What I'd like to do are things like this, but the below search just brings in the same value for each name.&lt;BR /&gt;&lt;BR /&gt;&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;index=storage sourcetype="netbackup:license"
| spath output=Name path=data{}.attributes.clientDetails{}.clientName
| spath output=ClientConsumptionMB path=data{}.attributes.clientDetails{}.clientConsumptionMB
| spath output=PolicyName path=data{}.attributes.clientDetails{}.policyDetails{}.policyName
| spath output=PolicyType path=data{}.attributes.clientDetails{}.policyDetails{}.policyType
|stats last(ClientConsumptionMB) by Name&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So then I tried to do this.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;index=storage sourcetype="netbackup:license"
| spath output=Name path=data{}.attributes.clientDetails{}.clientName
| spath output=ClientConsumptionMB path=data{}.attributes.clientDetails{}.clientConsumptionMB
| spath output=PolicyName path=data{}.attributes.clientDetails{}.policyDetails{}.policyName
| spath output=PolicyType path=data{}.attributes.clientDetails{}.policyDetails{}.policyType
| eval Name=upper(Name)
| eval NameCount=mvzip(Name,ClientConsumptionMB)
| mvexpand NameCount
| eval mvNameCount=split(NameCount,",")
| eval Name=mvindex(mvNameCount,0)
| eval ClientConsumptionMB=mvindex(mvNameCount,1)
| stats last(ClientConsumptionMB) by Name&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And ran into a 300 line limit for mvexpand.&lt;BR /&gt;&lt;BR /&gt;Help?&lt;/P&gt;</description>
    <pubDate>Mon, 25 Jan 2021 21:19:49 GMT</pubDate>
    <dc:creator>jondukehds</dc:creator>
    <dc:date>2021-01-25T21:19:49Z</dc:date>
    <item>
      <title>Large Json Array, Spath and stats</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/537130#M151824</link>
      <description>&lt;P&gt;So I have a large JSON array that is now being brought in and ingested correctly, but I cannot do any stats function on it. What I'd like to do are things like this, but the below search just brings in the same value for each name.&lt;BR /&gt;&lt;BR /&gt;&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;index=storage sourcetype="netbackup:license"
| spath output=Name path=data{}.attributes.clientDetails{}.clientName
| spath output=ClientConsumptionMB path=data{}.attributes.clientDetails{}.clientConsumptionMB
| spath output=PolicyName path=data{}.attributes.clientDetails{}.policyDetails{}.policyName
| spath output=PolicyType path=data{}.attributes.clientDetails{}.policyDetails{}.policyType
|stats last(ClientConsumptionMB) by Name&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So then I tried to do this.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;index=storage sourcetype="netbackup:license"
| spath output=Name path=data{}.attributes.clientDetails{}.clientName
| spath output=ClientConsumptionMB path=data{}.attributes.clientDetails{}.clientConsumptionMB
| spath output=PolicyName path=data{}.attributes.clientDetails{}.policyDetails{}.policyName
| spath output=PolicyType path=data{}.attributes.clientDetails{}.policyDetails{}.policyType
| eval Name=upper(Name)
| eval NameCount=mvzip(Name,ClientConsumptionMB)
| mvexpand NameCount
| eval mvNameCount=split(NameCount,",")
| eval Name=mvindex(mvNameCount,0)
| eval ClientConsumptionMB=mvindex(mvNameCount,1)
| stats last(ClientConsumptionMB) by Name&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And ran into a 300 line limit for mvexpand.&lt;BR /&gt;&lt;BR /&gt;Help?&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jan 2021 21:19:49 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/537130#M151824</guid>
      <dc:creator>jondukehds</dc:creator>
      <dc:date>2021-01-25T21:19:49Z</dc:date>
    </item>
    <item>
      <title>Re: Large Json Array, Spath and stats</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/540733#M153020</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/222625"&gt;@jondukehds&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Assuming this is output from the NetBackup Licensing API, we can use mock test data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
  "data": [
    {
      "type": "string",
      "id": "string",
      "attributes": {
        "masterConsumptionMB": 0,
        "clientDetails": [
          {
            "clientName": "client1",
            "clientConsumptionMB": 123,
            "policyDetails": [
              {
                "backupId": "string",
                "policyName": "string",
                "masterServer": "string",
                "policyType": "string",
                "policyConsumptionMB": 0
              }
            ]
          },
          {
            "clientName": "client2",
            "clientConsumptionMB": 456,
            "policyDetails": [
              {
                "backupId": "string",
                "policyName": "string",
                "masterServer": "string",
                "policyType": "string",
                "policyConsumptionMB": 0
              }
            ]
          }
        ]
      }
    }
  ],
  "meta": {
    "pagination": {
      "prev": 0,
      "next": 0,
      "first": 0,
      "last": 0,
      "count": 0,
      "offset": 0,
      "limit": 0
    }
  }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We have&amp;nbsp;clientName values client1 and client2 with&amp;nbsp;clientConsumptionMB values 123 and 456, respectively.&lt;/P&gt;&lt;P&gt;Putting this into a synthetic search:&lt;/P&gt;&lt;P&gt;| makeresults&lt;BR /&gt;| eval capacity="{\"data\":[{\"type\":\"string\",\"id\":\"string\",\"attributes\":{\"masterConsumptionMB\":0,\"clientDetails\":[{\"clientName\":\"client1\",\"clientConsumptionMB\":123,\"policyDetails\":[{\"backupId\":\"string\",\"policyName\":\"string\",\"masterServer\":\"string\",\"policyType\":\"string\",\"policyConsumptionMB\":0}]},{\"clientName\":\"client2\",\"clientConsumptionMB\":456,\"policyDetails\":[{\"backupId\":\"string\",\"policyName\":\"string\",\"masterServer\":\"string\",\"policyType\":\"string\",\"policyConsumptionMB\":0}]}]}}],\"meta\":{\"pagination\":{\"prev\":0,\"next\":0,\"first\":0,\"last\":0,\"count\":0,\"offset\":0,\"limit\":0}}}"&lt;BR /&gt;| spath input=capacity&lt;BR /&gt;| rename "data{}.attributes.clientDetails{}.clientName" as clientName, "data{}.attributes.clientDetails{}.clientConsumptionMB" as clientConsumptionMB&lt;BR /&gt;| eval consumption=mvzip(clientName, clientConsumptionMB, "|")&lt;BR /&gt;| fields consumption&lt;BR /&gt;| mvexpand consumption&lt;BR /&gt;| eval consumption=split(consumption, "|"), clientName=mvindex(consumption, 0), clientConsumptionMB=mvindex(consumption, 1)&lt;BR /&gt;| fields - consumption&lt;BR /&gt;| stats latest(clientConsumptionMB) as clientConsumptionMB by clientName&lt;/P&gt;&lt;P&gt;yields:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="50%"&gt;&lt;STRONG&gt;clientName&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="50%"&gt;&lt;STRONG&gt;clientConsumptionMB&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="50%"&gt;client1&lt;/TD&gt;&lt;TD width="50%"&gt;123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;client2&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;mvexpand has no default result limit; it's memory bound by the max_mem_usage_mb setting in the mvexpand stanza in limits.conf. If you're hitting the memory ceiling, try reducing your footprint as I've done above. If that fails, try increasing (or asking your Splunk administrator to increase) max_mem_usage_mb.&lt;/P&gt;</description>
      <pubDate>Sun, 21 Feb 2021 18:31:18 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/540733#M153020</guid>
      <dc:creator>tscroggins</dc:creator>
      <dc:date>2021-02-21T18:31:18Z</dc:date>
    </item>
    <item>
      <title>Re: Large Json Array, Spath and stats</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/566255#M197349</link>
      <description>&lt;P&gt;Doing nomv on the extracted field helped me:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| nomv Name&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;After that stats by that field worked.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Sep 2021 07:25:59 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Large-Json-Array-Spath-and-stats/m-p/566255#M197349</guid>
      <dc:creator>quzen</dc:creator>
      <dc:date>2021-09-08T07:25:59Z</dc:date>
    </item>
  </channel>
</rss>

