首页 > 解决方案 > 查询以获取多个 y 系列以使用 ysplit=panels 呈现多个面板

问题描述

如何编写查询以使用| render timechart with (ysplit=panels)输出在多个面板中绘制正确格式的数据结果?

查看 Microsoft 的示例,我需要让我IPPrefix的列在一行中生成多个列。相反,我的查询为IPPrefix.

我有以下查询:

let startTime = datetime('2020.07.23 20:00:00');
let endTime = datetime('2020.07.23 23:59:00');
AzureDiagnostics
| where TimeGenerated between (startTime..endTime)
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| where requestUri_s contains "api/auth/ping"
| extend IPParts = split(clientIP_s, '.')
| extend IPPrefix = strcat(IPParts[0], '.', IPParts[1], '.', IPParts[2])
| make-series Count = count() on TimeGenerated in range(startTime, endTime, 5m) by IPPrefix
//| summarize AggregatedValue = count() by IPPrefix, bin(TimeGenerated, 1m)
| render timechart with (ysplit=panels)

我希望结果看起来像: 在此处输入图像描述

但相反,所有 y 系列都绘制在一个面板中,例如: 在此处输入图像描述

我想我没有make-series以正确的方式使用以产生我需要的结果,但我无法以不同的方式应用它来使其工作。

标签: azure-data-explorerkql

解决方案


我意识到我需要在渲染之前以数据为中心。我还了解到该ysplit=panels选项限制为 5 个面板。我不得不将系列限制为五个,然后对聚合数据执行透视。

...
| make-series Count = count() on TimeGenerated in range(startTime, endTime, 1m) by IPPrefix
| take 5
| evaluate pivot(IPPrefix, any(Count), TimeGenerated)
| render timechart with(ysplit=panels)

生成的带有五个面板的图表。 在此处输入图像描述


推荐阅读