如何在 Splunk 中比较两个数据集并根据差异指示符条件突出显示表格单元格?

问题描述 投票:0回答:1

我有不同的 JSON 数据集,它们在 Splunk 中索引到 FOOD_DB。 在仪表板中,我想比较下拉菜单中的任意两个选定的数据集。

第一个下拉菜单标记为 Current_year
第二个下拉菜单标记为 Comparing_year

我将显示 Current_year 的数据并根据某些条件突出显示单元格。

示例 JSON 数据集如下所示:
就说今年吧

{ 
    "Sugar": {
        "prod_rate" : "50",
        "prod_qual" : "Good"
    },
    "Rice": {
        "prod_rate" : "80",
        "prod_qual" : "OK"
    }
}

用于比较年份

{ 
    "Sugar": {
        "prod_rate" : "80",
        "prod_qual" : "Good"
    },
    "Rice": {
        "prod_rate" : "40",
        "prod_qual" : "AVERAGE"
    }
}

条件:

  1. 如果当前 prod_rate 大于比较年份,则单元格将为绿色,如果小于则为红色。
  2. 如果 prod_qual 不等于则黄色

到目前为止我尝试过的代码如下,使用 colorPalette 对单元格进行着色。但无法对从单独的下拉列表中选择的两个数据集进行比较并根据设置的条件突出显示。

<form version="1.1" theme="dark">
  <label>COMPARE FOOD DATA/label>
  <description>COMPARISON TABLE</description>
  <fieldset submitButton="false">
    <input type="dropdown" token="curYr">
      <label>Current_year</label>
      <fieldForLabel>cur_year</fieldForLabel>
      <fieldForValue>cur_year</fieldForValue>
      <search>
        <query>
          index=FOOD_DB |stats values(time) as cur_year |mvexpand cur_year
        </query>
 
      </search>
    </input>
  </fieldset>
    <fieldset submitButton="false">
    <input type="dropdown" token="compYr">
      <label>Comparing_year</label>
      <fieldForLabel>comp_year</fieldForLabel>
      <fieldForValue>comp_year</fieldForValue>
      <search>
        <query>
          index=FOOD_DB |stats values(time) as comp_year |mvexpand comp_year
        </query>
 
      </search>
    </input>
  </fieldset>
  <row>
    <panel>
      <title>View and Compare</title>
      <table>
         <option name="count">15</option>
        <search>
          <query> index=FOOD_DB time = $curYr$| eval prod_name = json_array_to_mv(json_keys(_raw))|eval prod_name = mvfilter(NOT match(prod_name, "uploadedBy"))
| mvexpand prod_name
| eval data = json_extract(_raw, prod_name), prod_rate = json_extract(data, "prod_rate"), prod_qual = json_extract(data, "prod_qual")
| table prod_name, prod_rate, prod_qual
| rename prod_name as prod_names
</query>
        </search>
        <format type="color" field="prod_rate">
        <colorPalette type="expression">if(match(value,"80"),"#65A637","#FF0000")</colorPalette>
    </format>
      </table>
    </panel>
  </row>
</form>
splunk
1个回答
0
投票

我会在前两个(当前和最后一个产品)旁边生成一个新字段,标记为“趋势”

用“向上”或“向下”填充

trend

然后在

trend
字段上设置条件格式

这是一个可以在任何地方运行的玩具仪表板,可以做到这一点:

<dashboard version="1.1">
  <label>conditional formatting</label>
  <row>
    <panel>
      <table>
        <search>
          <query>| makeresults
| eval break="7;8;up|9;8;down|10;10;even"
| makemv delim="|" break
| mvexpand break
| rex field=break "(?&lt;last&gt;\d+)\D+(?&lt;this&gt;\d+)\W+(?&lt;trend&gt;.+)"
| fields - _time break</query>
          <earliest>-24h@h</earliest>
          <latest>now</latest>
          <sampleRatio>1</sampleRatio>
        </search>
        <option name="count">100</option>
        <option name="dataOverlayMode">none</option>
        <option name="drilldown">none</option>
        <option name="percentagesRow">false</option>
        <option name="rowNumbers">false</option>
        <option name="totalsRow">false</option>
        <option name="wrap">true</option>
        <format type="color" field="trend">
          <colorPalette type="map">{"up":#55C169,"down":#D41F1F}</colorPalette>
        </format>
      </table>
    </panel>
  </row>
</dashboard>
© www.soinside.com 2019 - 2024. All rights reserved.