在 Splunk 多选中为每个项目设置一个标记
Set a token per item in a Splunk multiselect
我想为表单的多选输入中的每个项目设置一个布尔标记(selected/not 已选择)。我看到了一个解决方法(奇怪?)缺乏开箱即用的能力来做这样的事情:
https://community.splunk.com/t5/Dashboards-Visualizations/Hide-Display-Panels-Using-Multiselect/m-p/336502/highlight/true#M21830
我认为合理的简化是:
<fieldset>
<input type="multiselect" token="item_selector" searchWhenChanged="true">
<delimiter>,</delimiter>
<choice value="item1">item1</choice>
<choice value="item2">item2</choice>
</input>
</fieldset>
<search>
<query>
eval data="$item_selector$"
| eval show1=match(data,"item1")
| eval show2=match(data,"item2")
</query>
<done>
<condition>
<set token="show1_token">$result.show1$</set>
<set token="show2_token">$result.show2$</set>
</condition>
</done>
</search>
我认为这行不通,因为:
<row>
<panel depends="$my_true$">
<title>Panel 1</title>
<html>$show1_token$</html>
<html>$show1_token$</html>
</panel>
</row>
无论在多选中选择了哪些项目,都只会在仪表板上显示以下内容:
$show1_token$
$show2_token$
而我本以为是“真”或“假”的某种组合(取决于选择的项目)。
他们称此为“虚拟搜索”- 何时执行此搜索?
这是为每个项目设置布尔标记的合理方法(如果可以更正)吗?是否有其他替代方案(javascript 除外,因为我没有在此仪表板上的权限)?
我对仪表板进行了一些更改 XML 以解决您在显示面板中遇到的问题,现在当您在 [=11= 中更改选择时它可以正确显示令牌值] 输入。试一试。
<dashboard>
<label>Multiselect - Token Test</label>
<fieldset>
<input type="multiselect" token="item_selector" searchWhenChanged="true">
<delimiter>,</delimiter>
<choice value="item1">item1</choice>
<choice value="item2">item2</choice>
</input>
</fieldset>
<search>
<query>
| makeresults
| eval data="$item_selector$"
| eval show1=toString(match(data,"item1"))
| eval show2=toString(match(data,"item2"))
</query>
<done>
<condition>
<set token="show1_token">$result.show1$</set>
<set token="show2_token">$result.show2$</set>
</condition>
</done>
</search>
<row>
<panel depends="$item_selector$">
<title>Panel 1</title>
<html>$show1_token$</html>
<html>$show2_token$</html>
</panel>
</row>
</dashboard>
一旦用户从 multiselect
下拉列表中选择一个选项,就会执行搜索(虚拟搜索)。
eval
语句中存在问题,因为 - “无法为字段分配布尔结果”。
这就是我将布尔值从 match
函数转换为字符串
的原因
我想为表单的多选输入中的每个项目设置一个布尔标记(selected/not 已选择)。我看到了一个解决方法(奇怪?)缺乏开箱即用的能力来做这样的事情: https://community.splunk.com/t5/Dashboards-Visualizations/Hide-Display-Panels-Using-Multiselect/m-p/336502/highlight/true#M21830
我认为合理的简化是:
<fieldset>
<input type="multiselect" token="item_selector" searchWhenChanged="true">
<delimiter>,</delimiter>
<choice value="item1">item1</choice>
<choice value="item2">item2</choice>
</input>
</fieldset>
<search>
<query>
eval data="$item_selector$"
| eval show1=match(data,"item1")
| eval show2=match(data,"item2")
</query>
<done>
<condition>
<set token="show1_token">$result.show1$</set>
<set token="show2_token">$result.show2$</set>
</condition>
</done>
</search>
我认为这行不通,因为:
<row>
<panel depends="$my_true$">
<title>Panel 1</title>
<html>$show1_token$</html>
<html>$show1_token$</html>
</panel>
</row>
无论在多选中选择了哪些项目,都只会在仪表板上显示以下内容:
$show1_token$
$show2_token$
而我本以为是“真”或“假”的某种组合(取决于选择的项目)。
他们称此为“虚拟搜索”- 何时执行此搜索?
这是为每个项目设置布尔标记的合理方法(如果可以更正)吗?是否有其他替代方案(javascript 除外,因为我没有在此仪表板上的权限)?
我对仪表板进行了一些更改 XML 以解决您在显示面板中遇到的问题,现在当您在 [=11= 中更改选择时它可以正确显示令牌值] 输入。试一试。
<dashboard>
<label>Multiselect - Token Test</label>
<fieldset>
<input type="multiselect" token="item_selector" searchWhenChanged="true">
<delimiter>,</delimiter>
<choice value="item1">item1</choice>
<choice value="item2">item2</choice>
</input>
</fieldset>
<search>
<query>
| makeresults
| eval data="$item_selector$"
| eval show1=toString(match(data,"item1"))
| eval show2=toString(match(data,"item2"))
</query>
<done>
<condition>
<set token="show1_token">$result.show1$</set>
<set token="show2_token">$result.show2$</set>
</condition>
</done>
</search>
<row>
<panel depends="$item_selector$">
<title>Panel 1</title>
<html>$show1_token$</html>
<html>$show2_token$</html>
</panel>
</row>
</dashboard>
一旦用户从 multiselect
下拉列表中选择一个选项,就会执行搜索(虚拟搜索)。
eval
语句中存在问题,因为 - “无法为字段分配布尔结果”。
这就是我将布尔值从 match
函数转换为字符串