工作簿下拉列表参数
通过使用下拉列表参数,可以从已知集中收集一个或多个输入值。 例如,可以使用下拉列表参数来选择应用的一个请求。 下拉列表参数还提供向用户收集任意输入的用户友好方式。 在交互式报表中启用筛选功能时,下拉列表参数特别有用。
指定下拉列表参数的最简单方法是在参数设置中提供一个静态列表。 更有意思的方法是通过 KQL 查询动态获取列表。 还可以使用参数设置指定是单选还是多选。 如果是多选,可指定结果集的格式,例如作为分隔符或引号。
创建静态下拉列表参数
从编辑模式下的空工作簿开始操作。
选择“添加参数”>“添加参数”。
在打开的新参数窗格中,输入:
- 参数名称:
Environment
- 参数类型:
Drop down
- 必需:
checked
- 允许多选:
unchecked
- 从以下位置获取数据:
JSON
- 参数名称:
在“JSON 输入”文本块中,插入以下 JSON 片段:
[ { "value":"dev", "label":"Development" }, { "value":"ppe", "label":"Pre-production" }, { "value":"prod", "label":"Production", "selected":true } ]
选择“更新”。
选择“保存”以创建参数。
Environment 参数是包含三个值的下拉列表。
创建包含项组的静态下拉列表
如果查询结果/JSON 包含 group
字段,则下拉列表会显示值组。 请按照前面的示例,但改用以下 JSON:
[
{ "value":"dev", "label":"Development", "group":"Development" },
{ "value":"dev-cloud", "label":"Development (Cloud)", "group":"Development" },
{ "value":"ppe", "label":"Pre-production", "group":"Test" },
{ "value":"ppe-test", "label":"Pre-production (Test)", "group":"Test" },
{ "value":"prod1", "label":"Prod 1", "selected":true, "group":"Production" },
{ "value":"prod2", "label":"Prod 2", "group":"Production" }
]
创建动态下拉列表参数
从编辑模式下的空工作簿开始操作。
选择“添加参数”>“添加参数”。
在打开的新参数窗格中,输入:
- 参数名称:
RequestName
- 参数类型:
Drop down
- 必需:
checked
- 允许多选:
unchecked
- 从以下位置获取数据:
Query
- 参数名称:
在“JSON 输入”文本块中,插入以下 JSON 片段:
requests | summarize by name | order by name asc
选择“运行查询”。
选择“保存”以创建参数。
RequestName 参数将是包含应用中所有请求的名称的下拉列表。
引用下拉列表参数
可以引用下拉列表参数。
在 KQL 中
选择“添加查询”以添加查询控件,然后选择 Application Insights 资源。
在 KQL 编辑器中输入此片段:
requests | where name == '{RequestName}' | summarize Requests = count() by bin(timestamp, 1h)
此片段可根据查询评估时间扩展为:
requests | where name == 'GET Home/Index' | summarize Requests = count() by bin(timestamp, 1h)
运行查询以查看结果。 (可选)以图表形式呈现结果。
参数值、标签、选项和组
前面的动态下拉列表参数中使用的查询只返回下拉列表中真正呈现的值列表。 但如果需要不同的显示名称,或者要选择其中的一个显示名称,该怎么办? 下拉列表参数使用此功能的值、标签、选项和组列。
以下示例演示如何获取已使用表情符号设置其显示名称样式的 Application Insights 依赖项的列表,选择第一个依赖项,并按操作名称分组依赖项:
dependencies
| summarize by operation_Name, name
| where name !contains ('.')
| order by name asc
| serialize Rank = row_number()
| project value = name, label = strcat('🌐 ', name), selected = iff(Rank == 1, true, false), group = operation_Name
下拉列表参数选项
参数 | 说明 | 示例 |
---|---|---|
{DependencyName} |
选定值 | GET fabrikamaccount |
{DependencyName:label} |
选定标签 | 🌐 GET fabrikamaccount |
{DependencyName:value} |
选定值 | GET fabrikamaccount |
多重选择
目前为止,示例将参数显式设置为仅选择下拉列表中的一个值。 下拉列表参数还支持多选。 若要启用此选项,请选择“允许多选”复选框。
可以通过分隔符和引号设置指定结果集的格式。 默认设置以集合形式返回采用以下格式的值:“a”、“b”、“c”。 还可以限制选项的数量。
需要更改引用参数的 KQL 才能使用结果的格式。 做到这一点的最常用方式是使用 in
运算符。
dependencies
| where name in ({DependencyName})
| summarize Requests = count() by bin(timestamp, 1h), name
此示例显示了多选下拉列表参数的实际运用:
下拉列表特殊选择
下拉列表参数还允许指定也会显示在下拉列表中的特殊值:
- 任何 1 个
- 任何 3 个
- ...
- 任何 100 2上
- 任何自定义限制
- 全部
选择这些特殊项后,参数值会自动设置为具体的项数量,或所有值。
特殊大小写全部
选择“全部”选项后,将显示一个额外的字段,该字段允许你指定在选择“全部”选项时将特殊值用于参数。 当“全部”是一个较大的项数量并会生成非常大的查询时,此特殊值非常有用。
在这种具体情况下,使用的是字符串 []
而不是一个值。 此字符串可用于在日志查询中生成空数组,例如:
let selection = dynamic([{Selection}]);
SomeQuery
| where array_length(selection) == 0 or SomeField in (selection)
如果选择了所有项,则 Selection
的值是 []
,会在查询中为 selection
变量生成一个空数组。 如果未选择任何值,则 Selection
的值将是一个空的字符串,也会生成一个空数组。 如果选择了任何值,则会在查询的动态部分中设置这些值的格式,让数组中具有这些值。 然后,可以测试具有 0 的 array_length
是否拥有未应用的筛选器,或使用 in
运算符筛选数组中的值。
其他常见示例在需要参数时使用“*”作为特殊标记值,然后使用以下命令进行测试:
| where "*" in ({Selection}) or SomeField in ({Selection})