<?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: How to draw a table that digests a field which varies differently in Getting Data In</title>
    <link>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603409#M104990</link>
    <description>&lt;P&gt;What have you tried so far?&amp;nbsp; How have those efforts not met expectations?&lt;/P&gt;</description>
    <pubDate>Mon, 27 Jun 2022 15:23:26 GMT</pubDate>
    <dc:creator>richgalloway</dc:creator>
    <dc:date>2022-06-27T15:23:26Z</dc:date>
    <item>
      <title>How to draw a table that digests a field which varies differently</title>
      <link>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603396#M104987</link>
      <description>&lt;P&gt;Hi, I wanna plot a table to indicate the scanner status of Gitlab repos in the dashboard, like below: (1 means enabled, 0 means no used).&lt;/P&gt;&lt;TABLE border="1" width="103.9438786833646%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="12.5%" height="31px"&gt;fullPath&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN&gt;SAST&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN class=""&gt;SAST&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;IAC&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN&gt;DAST&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN class=""&gt;DEPENDENCY&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;SCANNING&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN class=""&gt;CONTAINER&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;SCANNING&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="6.25%" height="31px"&gt;&lt;SPAN class=""&gt;SECRET&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;DETECTION&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="3.125%" height="31px"&gt;&lt;SPAN class=""&gt;COVERAGE&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;FUZZING&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="3.125%" height="31px"&gt;&lt;SPAN class=""&gt;API&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;FUZZING&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="31px"&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;CLUSTER&lt;/SPAN&gt;_IMAGE&lt;/SPAN&gt;&lt;SPAN&gt;_&lt;/SPAN&gt;&lt;SPAN class=""&gt;SCANNING&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="31px"&gt;repos1&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="31px"&gt;repos2&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="31px"&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="32px"&gt;repos3&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD height="32px"&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And my raw data stream look like below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{"fullPath": "repos1", "securityScanners": {"available": ["SAST", "SAST_IAC", "DAST", "DEPENDENCY_SCANNING", "CONTAINER_SCANNING", "SECRET_DETECTION", "COVERAGE_FUZZING", "API_FUZZING", "CLUSTER_IMAGE_SCANNING"], "enabled": ["SAST", "DEPENDENCY_SCANNING", "SECRET_DETECTION"], "pipelineRun": ["SAST", "DEPENDENCY_SCANNING", "SECRET_DETECTION"]}}

{"fullPath": "repos2", "securityScanners": {"available": ["SAST", "SAST_IAC", "DAST", "DEPENDENCY_SCANNING", "CONTAINER_SCANNING", "SECRET_DETECTION", "COVERAGE_FUZZING", "API_FUZZING", "CLUSTER_IMAGE_SCANNING"], "enabled": ["SAST", "DEPENDENCY_SCANNING", "SECRET_DETECTION"], "pipelineRun": ["SAST", "DEPENDENCY_SCANNING", "SECRET_DETECTION", "DAST"]}}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Could anyone help me build a search language to achieve the above?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jun 2022 14:27:28 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603396#M104987</guid>
      <dc:creator>Saer000</dc:creator>
      <dc:date>2022-06-27T14:27:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to draw a table that digests a field which varies differently</title>
      <link>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603409#M104990</link>
      <description>&lt;P&gt;What have you tried so far?&amp;nbsp; How have those efforts not met expectations?&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jun 2022 15:23:26 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603409#M104990</guid>
      <dc:creator>richgalloway</dc:creator>
      <dc:date>2022-06-27T15:23:26Z</dc:date>
    </item>
    <item>
      <title>Re: How to draw a table that digests a field which varies differently</title>
      <link>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603483#M105007</link>
      <description>&lt;P&gt;Here is an example using your example data&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval x=split("{\"fullPath\": \"repos1\", \"securityScanners\": {\"available\": [\"SAST\", \"SAST_IAC\", \"DAST\", \"DEPENDENCY_SCANNING\", \"CONTAINER_SCANNING\", \"SECRET_DETECTION\", \"COVERAGE_FUZZING\", \"API_FUZZING\", \"CLUSTER_IMAGE_SCANNING\"], \"enabled\": [\"SAST\", \"DEPENDENCY_SCANNING\", \"SECRET_DETECTION\"], \"pipelineRun\": [\"SAST\", \"DEPENDENCY_SCANNING\", \"SECRET_DETECTION\"]}}X{\"fullPath\": \"repos2\", \"securityScanners\": {\"available\": [\"SAST\", \"SAST_IAC\", \"DAST\", \"DEPENDENCY_SCANNING\", \"CONTAINER_SCANNING\", \"SECRET_DETECTION\", \"COVERAGE_FUZZING\", \"API_FUZZING\", \"CLUSTER_IMAGE_SCANNING\"], \"enabled\": [\"SAST\", \"DEPENDENCY_SCANNING\", \"SECRET_DETECTION\"], \"pipelineRun\": [\"SAST\", \"DEPENDENCY_SCANNING\", \"SECRET_DETECTION\", \"DAST\"]}}","X")
| mvexpand x
| rename x as _raw
| spath
| fields - _raw
| rename securityScanners.* as *
| chart values(enabled{}) by fullPath available{}
| foreach * [ eval &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=if("&amp;lt;&amp;lt;MATCHSTR&amp;gt;&amp;gt;"="fullPath", &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;, if(isnull(mvfind(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;, "&amp;lt;&amp;lt;MATCHSTR&amp;gt;&amp;gt;")), 0, 1)) ]&lt;/LI-CODE&gt;&lt;P&gt;The search fragment you need will be the last 3 lines and it assumes that your JSON fields have been extracted based on their JSON names.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2022 01:34:32 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603483#M105007</guid>
      <dc:creator>bowesmana</dc:creator>
      <dc:date>2022-06-28T01:34:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to draw a table that digests a field which varies differently</title>
      <link>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603560#M105017</link>
      <description>&lt;P&gt;Thanks a lot, it really works on my side.&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2022 10:39:35 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Getting-Data-In/How-to-draw-a-table-that-digests-a-field-which-varies/m-p/603560#M105017</guid>
      <dc:creator>Saer000</dc:creator>
      <dc:date>2022-06-28T10:39:35Z</dc:date>
    </item>
  </channel>
</rss>

