<?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: Foreach command with eval if in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579807#M202030</link>
    <description>&lt;P&gt;It looks like global_state will be set based only on the last field evaluated.&amp;nbsp; See if this variation helps.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| eval ok_count = 0
| foreach state_*  [ eval ok_count = ok_count + case(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko-WARN", 0, &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko-ERROR", 0, 1==1, 1) ]
| eval global_state = if(ok_count==3, "done", "issue")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 03 Jan 2022 19:02:04 GMT</pubDate>
    <dc:creator>richgalloway</dc:creator>
    <dc:date>2022-01-03T19:02:04Z</dc:date>
    <item>
      <title>Foreach command with eval if</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579799#M202026</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a table like that :&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;test&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;state_A&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;state_B&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;state_C&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ok&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ko- WARN&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ko - ERROR&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;2&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ko- WARN&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ok&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;ok&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;ok&lt;/TD&gt;&lt;TD&gt;ok&lt;/TD&gt;&lt;TD&gt;ok&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to create a field "global_state" with "done" value if all fields state_* value are "OK" , if not write "issue":&lt;/P&gt;&lt;TABLE border="1" width="740px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="184.677px" height="25px"&gt;test&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;state_A&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;state_B&lt;/TD&gt;&lt;TD width="92.4375px" height="25px"&gt;state_C&lt;/TD&gt;&lt;TD width="92.4062px"&gt;global_state&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="184.677px" height="25px"&gt;1&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;ok&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;ko- WARN&lt;/TD&gt;&lt;TD width="92.4375px" height="25px"&gt;ko - ERROR&lt;/TD&gt;&lt;TD width="92.4062px"&gt;issue&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="184.677px" height="25px"&gt;2&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;ko- WARN&lt;/TD&gt;&lt;TD width="184.74px" height="25px"&gt;ok&lt;/TD&gt;&lt;TD width="92.4375px" height="25px"&gt;ok&lt;/TD&gt;&lt;TD width="92.4062px"&gt;issue&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="184.677px"&gt;3&lt;/TD&gt;&lt;TD width="184.74px"&gt;ok&lt;/TD&gt;&lt;TD width="184.74px"&gt;ok&lt;/TD&gt;&lt;TD width="92.4375px"&gt;ok&lt;/TD&gt;&lt;TD width="92.4062px"&gt;done&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;I tried this foreach but not working :&lt;/P&gt;&lt;P&gt;| foreach state_*&amp;nbsp; [ eval global_state= if(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko- WARN" OR &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko - ERROR", "issue", "done") ]&lt;/P&gt;&lt;P&gt;The second condition in the if is not applied.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you help me please?&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jan 2022 17:08:54 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579799#M202026</guid>
      <dc:creator>mah</dc:creator>
      <dc:date>2022-01-03T17:08:54Z</dc:date>
    </item>
    <item>
      <title>Re: Foreach command with eval if</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579807#M202030</link>
      <description>&lt;P&gt;It looks like global_state will be set based only on the last field evaluated.&amp;nbsp; See if this variation helps.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| eval ok_count = 0
| foreach state_*  [ eval ok_count = ok_count + case(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko-WARN", 0, &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="ko-ERROR", 0, 1==1, 1) ]
| eval global_state = if(ok_count==3, "done", "issue")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jan 2022 19:02:04 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579807#M202030</guid>
      <dc:creator>richgalloway</dc:creator>
      <dc:date>2022-01-03T19:02:04Z</dc:date>
    </item>
    <item>
      <title>Re: Foreach command with eval if</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579885#M202053</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/213957"&gt;@richgalloway&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your example did not work, it gave me same issue than my search.&lt;/P&gt;</description>
      <pubDate>Tue, 04 Jan 2022 15:05:06 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579885#M202053</guid>
      <dc:creator>mah</dc:creator>
      <dc:date>2022-01-04T15:05:06Z</dc:date>
    </item>
    <item>
      <title>Re: Foreach command with eval if</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579886#M202054</link>
      <description>&lt;P&gt;Your issue is that you evaluate the field with each foreach call (as per the name).&lt;/P&gt;&lt;P&gt;So effectively you're getting only the final value. In the first row you're gonna get "issue" properly as the result because you have a "not OK" value in the last field but in the second row the global_state gets evaluated to "issue" for state_A but is immediately overwritten with "done" from state_B and then from state_C.&lt;/P&gt;&lt;P&gt;In such case you'd rather want to define an initial value beforehand&amp;nbsp; and then overwrite it if there is a need to do so. Like&lt;/P&gt;&lt;PRE&gt;&amp;lt;your search&amp;gt;&lt;BR /&gt;| eval global_state="done"&lt;BR /&gt;| foreach state_*&lt;BR /&gt;   [ eval global_state=if(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;!="ok","issue",global_state) ]&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;This way you set your global_state initially to "done" and then if you encounter any value other than "ok" in any of the state_* fields, it's getting overwritten to "issue".&lt;/P&gt;</description>
      <pubDate>Tue, 04 Jan 2022 15:20:38 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579886#M202054</guid>
      <dc:creator>PickleRick</dc:creator>
      <dc:date>2022-01-04T15:20:38Z</dc:date>
    </item>
    <item>
      <title>Re: Foreach command with eval if</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579949#M202069</link>
      <description>&lt;P&gt;Here are 2 ways to skin this cat.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| eval combined_state=TRIM(state_A)."-".TRIM(state_B)."-".TRIM(state_C)
| eval global_state=IF(combined_state="ok-ok-ok", "done", "issue")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| foreach state_* [| eval combined_state=MVAPPEND(combined_state, TRIM(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;))]
| eval combined_state=MVDEDUP(combined_state)
| eval global_state=IF(MVCOUNT(combined_state)==1 AND combined_state="ok", "done", "issue")&lt;/LI-CODE&gt;</description>
      <pubDate>Wed, 05 Jan 2022 05:06:44 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Foreach-command-with-eval-if/m-p/579949#M202069</guid>
      <dc:creator>johnhuang</dc:creator>
      <dc:date>2022-01-05T05:06:44Z</dc:date>
    </item>
  </channel>
</rss>

