可通过多种方式在工作簿中创建交互式报表和体验:
- 参数:当更新某个参数时,使用该参数的任何控件都会自动刷新并重新绘制,以反映新值。 此行为是大多数 Azure 门户报表支持交互性的方式。 工作簿以直接方式提供此功能,可最大程度地减少用户的工作量。
- 网格、磁贴和图表选择:可以构造以下方案:在网格中选择某行可基于该行的内容更新后续图表。 例如,你可能有一个网格,其中显示请求列表以及一些统计信息(例如失败计数)。 可以对其进行设置,以便如果选择某个请求的对应行,以下详细图表会更新为仅显示该请求。 了解如何设置网格行单击。
- 网格单元格单击:可以使用称为链接呈现器的特殊类型的网格列呈现器来添加交互。 链接呈现器根据单元格的内容将网格单元格转换为超链接。 工作簿支持多种链接呈现器,包括打开资源概述窗格、属性包查看器以及 Application Insights 搜索、使用情况和事务跟踪的呈现器。 了解如何设置网格单元格单击。
- 条件可见性:可以基于参数的值使控件出现或消失。 这样,你便可以根据用户输入或遥测状态生成不同外观的报表。 例如,当没有问题时,你可以向使用者显示摘要。 还可以在出现问题时显示详细信息。 了解如何设置条件可见性。
- 导出具有多重选择的参数:选择一行或多行时,可以从查询和指标工作簿组件导出参数。 了解如何在网格和图表中设置多重选择。
选择“编辑”,以确保处于编辑模式。
选择“添加查询”,将日志查询控件添加到工作簿。
选择日志查询类型、资源类型和目标资源。
使用查询编辑器输入用于分析的 KQL:
requests | summarize AllRequests = count(), FailedRequests = countif(success == false) by Request = name | order by AllRequests desc
选择“运行查询”以查看结果。
选择“高级设置”以打开“高级设置”窗格。
选中“选择项时,将导出参数”复选框。
选择“添加参数”并填写以下信息:
- 要导出的字段:
Request
- 参数名称:
SelectedRequest
- 默认值:
All requests
- 要导出的字段:
可选。 如果要导出所选行的整个内容而不是特定列,请将“要导出的字段”保留为未设置状态。 整个行的内容会作为 JSON 导出到参数。 在引用 KQL 控件时,请使用
todynamic
函数来分析该 JSON 并访问各个列。选择“保存”。
选择“完成编辑”。
如前面的步骤所示,添加另一个查询控件。
使用查询编辑器输入用于分析的 KQL。
requests | where name == '{SelectedRequest}' or 'All Requests' == '{SelectedRequest}' | summarize ['{SelectedRequest}'] = count() by bin(timestamp, 1h)
选择“运行查询”以查看结果。
将“可视化效果”更改为“面积图”。
选择要在第一个网格中选中的行。 请注意,下面的面积图已根据所选请求筛选了内容。
在编辑模式下,生成的报表如此示例所示:
下图显示了基于相同原理的、处于只读模式的更精致交互式报表。 报表使用网格单击来导出参数,而这些参数又在两个图表和一个文本块中使用。
选择“编辑”,以确保处于编辑模式。
选择“添加查询”,将日志查询控件添加到工作簿。
选择日志查询类型、资源类型和目标资源。
使用查询编辑器输入用于分析的 KQL:
requests | summarize Count = count(), Sample = any(pack_all()) by Request = name | order by Count desc
选择“运行查询”以查看结果。
选择“列设置”打开“设置”窗格。
在“列”部分,设置:
- 示例
- 列呈现器:
Link
- 要打开的视图:
Cell Details
- 链接标签:
Sample
- 列呈现器:
- 计数
- 列呈现器:
Bar
- 调色板:
Blue
- 最小值:
0
- 列呈现器:
- 请求
- 列呈现器:
Automatic
- 列呈现器:
- 示例
选择“保存并关闭”以应用更改。
在网格中选择“示例”链接以打开包含示例请求详细信息的窗格。
了解链接操作如何工作以增强工作簿交互性。
按照设置网格行单击部分中的步骤来设置两个交互式控件。
使用以下值添加新参数:
- 参数名称:
ShowDetails
- 参数类型:
Drop down
- 必需:
checked
- 从以下位置获取数据:
JSON
- JSON 输入:
["Yes", "No"]
- 参数名称:
选择“保存”以提交更改。
将参数值设置为
Yes
。在带有面积图的查询控件中,选择“高级设置”(齿轮图标)。
如果“ShowDetails”设置为
Yes
,请选择“使此项目有条件可见”。选择“完成编辑”以提交更改。
在工作簿工具栏上,选择“完成编辑”。
将“ShowDetails”的值切换为
No
。 请注意下面的图表已消失。
下图显示了“ShowDetails”为 Yes
的情况:
下图显示了“ShowDetails”为 No
的隐藏情况:
选择一行或多行时,查询和指标组件可以导出参数。
- 在显示网格的查询组件中,选择“高级设置”。
- 选中“选择这些项时,将导出参数”复选框。
- 选中“允许选择多个值”复选框。
- 显示的可视化效果将允许多选,导出的参数值将是值的数组,类似于使用多选下拉参数时的情况。
- 如果处于清除状态,则显示可视化效果仅捕获最后一个所选项,并且一次仅导出单个值。
- 对要导出的每个参数使用“添加参数”。 此时会出现一个弹出窗口,其中包含用于要导出的参数的设置。
启用单选后,可以指定要导出原始数据的哪个字段。 字段包括参数名称、参数类型以及未选择任何内容时所要使用的默认值。
启用多选后,可指定要导出原始数据的哪个字段。 字段包括参数名称、参数类型、quote with 和分隔符。 在查询中替换箭头值时,使用 quote with 和分隔符值将其转换为文本。 在多选中,如果未选中任何值,则默认值为空数组。
备注
对于多选,仅导出唯一值。 例如,看不到输出数组值,如“1,1,2,1”。 数组输出将为“1,2”。
如果在导出设置中将“要导出的字段”保留为空,则数据中的所有可用字段都将导出为键:值对的字符串化 JSON 对象。 对于网格和标题,字符串包含网格中的字段。 对于图表,可用字段会是 x、y、系列和标签(具体取决于图表类型)。
虽然默认行为是将参数导出为文本,但如果知道字段是订阅或资源 ID,请以导出参数类型形式使用该信息。 随后可以在需要这些参数类型的下游位置使用这类参数。
可以使用下拉列表捕获用户输入,并在查询中使用选择。 例如,可以使用一个下拉列表接受一组虚拟机,然后筛选 KQL 以仅包含所选计算机。 在大多数情况下,此步骤与在查询中包含参数值一样简单:
Perf
| where Computer in ({Computers})
| take 5
在更高级的方案中,可能需要先转换参数结果,然后才能在查询中进行使用。 采用以下 OData 筛选器有效负载:
{
"name": "deviceComplianceTrend",
"filter": "(OSFamily eq 'Android' or OSFamily eq 'OS X') and (ComplianceState eq 'Compliant')"
}
以下示例演示如何启用此方案。 假设希望 OSFamily
和 ComplianceState
筛选器的值来自工作簿中的下拉列表。 筛选器可以包含多个值,如前面的 OsFamily
情况所示。 它还需要支持要包含所有维度值的情况,即没有筛选器。
选择“添加参数”以创建新参数。 使用以下设置:
参数名称:
OsFilter
显示名称:
Operating system
参数类型:
drop-down
允许多重选择:
Checked
分隔符:
or
(前后带有空格)引用:
<empty>
从以下位置获取数据:
JSON
JSON 输入:
[ { "value": "OSFamily eq 'Android'", "label": "Android" }, { "value": "OSFamily eq 'OS X'", "label": "OS X" } ]
在“包括在下拉菜单中”中:
- 选中“所有”复选框。
- 选择所有值:
OSFamily ne '#@?'
选择“保存”以保存此参数。
使用以下这些设置添加另一个参数:
参数名称:
ComplianceStateFilter
显示名称:
Compliance State
参数类型:
drop-down
允许多重选择:
Checked
分隔符:
or
(前后带有空格)引用:
<empty>
从以下位置获取数据:
JSON
JSON 输入:
[ { "value": "ComplianceState eq 'Compliant'", "label": "Compliant" }, { "value": "ComplianceState eq 'Non-compliant'", "label": "Non compliant" } ]
在“包括在下拉菜单中”中:
- 选中“所有”复选框。
- 选择所有值:
ComplianceState ne '#@?'
选择“保存”以保存此参数。
选择“添加文本”以添加文本块。 在“要显示的 Markdown 文本”块中,添加:
{ "name": "deviceComplianceTrend", "filter": "({OsFilter}) and ({ComplianceStateFilter})" }
此屏幕截图显示了参数设置:
最简单的情况是在每个维度中选择单个筛选器值。 下拉列表控件使用 JSON 输入字段的值作为参数的值。
{
"name": "deviceComplianceTrend",
"filter": "(OSFamily eq 'OS X') and (ComplianceState eq 'Compliant')"
}
如果选择多个筛选器值(例如 Android 和 OS X 操作系统),则 Delimiter
和 Quote with
参数设置会启动并生成此复合筛选器:
{
"name": "deviceComplianceTrend",
"filter": "(OSFamily eq 'OS X' or OSFamily eq 'Android') and (ComplianceState eq 'Compliant')"
}
另一种常见情况是没有用于该维度的筛选器。 此方案等效于在结果集中包括维度的所有值。 启用它的方法是在下拉列表中提供 All
选项,并使其返回计算结果始终为 true
的筛选表达式。 一个示例是 ComplianceState eq '#@?'。
{
"name": "deviceComplianceTrend",
"filter": "(OSFamily eq 'OS X' or OSFamily eq 'Android') and (ComplianceState ne '#@?')"
}
有时你希望以不同的方式可视化基础数据集,而无需每次支付查询费用。 此示例演示如何在查询控件中使用 Merge
选项执行此操作。
选择“添加查询”以创建查询控件,并输入以下值:
数据源:
Logs
资源类型:
Log Analytics
Log Analytics 工作区:选择具有性能数据的一个工作区
Log Analytics 工作区日志查询:
Perf | where CounterName == '% Processor Time' | summarize CpuAverage = avg(CounterValue), CpuP95 = percentile(CounterValue, 95) by Computer | order by CpuAverage desc
选择“运行查询”以查看结果。
此结果数据集是我们要在多个可视化效果中重复使用的数据集。
转到“高级设置”选项卡,然后输入
Cpu data
作为名称。选择“添加查询”以创建另一个查询控件。
对于“数据源”,请选择
Merge
。选择“添加合并”。
在设置窗格中,设置:
- 合并类型:
Duplicate table
- 表:
Cpu data
- 合并类型:
选择“运行合并”。 你会得到与前面相同的结果。
设置表选项:
- 使用“合并后命名”列为结果列设置易记名称。 例如,可以将
CpuAverage
重命名为CPU utilization (avg)
,然后使用“运行合并”以更新结果集。 - 使用“删除”移除列。
- 选择
[Cpu data].CpuP95
行。 - 在查询控件工具栏中使用“删除”。
- 使用“运行合并”以查看没有 CpuP95 列的结果集
- 选择
- 使用“合并后命名”列为结果列设置易记名称。 例如,可以将
通过选择“上移”或“下移”更改列的顺序。
通过选择“添加新项”,基于其他列的值添加新列。
使用“列设置”中的选项设置表样式以获取所需可视化效果。
根据需要添加针对
Cpu data
结果集工作的更多查询控件。
此示例并排显示平均和 P95 CPU 使用率:
此示例演示如何使用 Azure 资源管理器查询控件列出订阅中的所有现有警报。 本指南还会使用 JSON 路径转换设置结果格式。 请参阅支持的资源管理器调用列表。
选择“添加参数”并设置:
- 参数名称:
Subscription
- 参数类型:
Subscription picker
- 必需:
Checked
- 从以下位置获取数据:
Default Subscriptions
- 参数名称:
选择“保存” 。
选择“添加查询”以创建查询控件,并使用以下这些设置。 对于此示例,我们使用警报全部获取 REST 调用来获取订阅的现有警报列表。 有关支持的 API 版本,请参阅 Azure REST API 参考。
- 数据源:
Azure Resource Manager (Preview)
- Http 方法:
GET
- 路径:
/subscriptions/{Subscription:id}/providers/Microsoft.AlertsManagement/alerts
- 在“参数”选项卡上添加 API 版本参数并设置:
- 参数:
api-version
- 值:
2018-05-05
- 参数:
- 数据源:
从创建的订阅参数中选择订阅,然后选择“运行查询”以查看结果。
此原始 JSON 会从资源管理器返回:
你可能对此处的信息感到满意。 不过,让我们提取一些有趣的属性,并采用易于阅读的方式设置响应格式。
- 转到“结果设置”选项卡。
- 将“结果格式”从
Content
更改为JSON Path
。 JSON 路径是工作簿转换器。 - 在 JSON 路径设置中,将“JSON 路径表”设置为
$.value.[*].properties.essentials
。 这会从返回的 JSON 中提取所有"value.*.properties.essentials"
字段。 - 选择“运行查询”以查看网格。
JSON 路径还允许从生成的表中选择信息以显示为列。
例如,如果要将结果筛选到 TargetResource、Severity、AlertState、AlertRule、Description、StartTime 和 ResolvedTime 列,则可以在 JSON 路径的列表中添加以下行:
列 ID | 列 JSON 路径 |
---|---|
TargetResource | $.targetResource |
严重性 | $.severity |
AlertState | $.alertState |
AlertRule | $.alertRule |
说明 | $.description |
StartTime | $.startDateTime |
ResolvedTime | $.monitorConditionResolvedDateTime |