我有不同的 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"
}
}
条件:
到目前为止我尝试过的代码如下,使用 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>
我会在前两个(当前和最后一个产品)旁边生成一个新字段,标记为“趋势”
用“向上”或“向下”填充
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 "(?<last>\d+)\D+(?<this>\d+)\W+(?<trend>.+)"
| 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>