2

我想创建一个 SUMO 逻辑饼图,但是我很难使用 SUM 总计。下面你可以看到我的查询

_sourceCategory=MyAppSource
| parse "* [*] {\"machineName\":*,\"requestPath\":*,\"requestMethod\":*,\"requestSize\":*,\"requestType\":*,\"service\":*,\"duration\":*,\"stack\":*,\"errorMessage\":*,\"errorObject\":*,\"userName\":*,\"clientId\":*,\"statusCode\":*,\"traceIdentifier\":*}" as TimeStamp,Subject,MachineName,RequestPath,RequestMethod,RequestSize,RequestType,Service,Duration,Stack,ErrorMessage,ErrorObject,UserName,ClientID,StatusCode,TraceIdentifier
| if (Duration >= 40, 1, 0) as RequestTimeGreaterThan40ms
| if (Duration < 40, 1, 0) as RequestTimeUnder40ms 
| sum(RequestTimeGreaterThan40ms) as RequestTimeGreaterThan40ms, sum(RequestTimeUnder40ms) as RequestTimeUnder40ms
| RequestTimeGreaterThan40ms + RequestTimeUnder40ms as TotalRequest
| (RequestTimeGreaterThan40ms/TotalRequest)*100 as RequestTimeGreaterThan40ms
| (RequestTimeUnder40ms/TotalRequest)*100 as RequestTimeUnder40ms

这会产生以下结果:

在此处输入图像描述

但是,当我查看我的饼图时,它看起来像这样

在此处输入图像描述

我的问题: 正如您所看到的,我的问题是饼图只获取第一个值,即 4.03717,仅此而已。我需要将其他列转置为行,以便饼图可以理解这些是不同的值,并且它们都需要在饼图中表示。有谁知道这样做的最佳方法是什么?

4

1 回答 1

3

我认为您的方法的问题在于您最终将高于 40 毫秒和低于 40 毫秒的请求计算在两个单独的“类别”中,因此很难“加入”它们(抱歉措辞不太准确) .

更清洁的方法是使用单一聚合(不是双重):

_sourceCategory=MyAppSource
| parse "* [*] {\"machineName\":*,\"requestPath\":*,\"requestMethod\":*,\"requestSize\":*,\"requestType\":*,\"service\":*,\"duration\":*,\"stack\":*,\"errorMessage\":*,\"errorObject\":*,\"userName\":*,\"clientId\":*,\"statusCode\":*,\"traceIdentifier\":*}" as TimeStamp,Subject,MachineName,RequestPath,RequestMethod,RequestSize,RequestType,Service,Duration,Stack,ErrorMessage,ErrorObject,UserName,ClientID,StatusCode,TraceIdentifier
| if (Duration >= 40, "greater", "under") as RequestTimeVs40ms
| count by RequestTimeVs40ms

(免责声明:我目前受雇于 Sumo Logic)

于 2019-04-15T19:56:56.637 回答