0

嗨,我在 splunk 中有一些具有这种形式的事件-

位置:一些值(相同的值可以在多个事件中存在)

客户端:一些值(相同的值可以在多个事件中存在)

TransactionNumber:某个值(每个事件唯一)

交易时间:一些价值(每个事件唯一)

现在我想要一个这种形式的表格 -

桌子

基本上每个位置可以有多个客户端,每个客户端可以有不同的事务。交易号和交易时间是唯一的,并且具有一对一的映射关系。

我在 splunk- 中使用这个查询

| stats list(TransactionNumber) list(TransactionTime) by Location Client

发生的事情是我获得了位置和客户的独特组合,但我想要的是针对特定位置列出的独特客户。

这就是我得到的-

在此处输入图像描述

如何修改查询以达到相同的效果?

4

2 回答 2

1

这是使用 _internal 索引的完整示例

index=_internal

| stats list(log_level) list(component) by sourcetype source

| streamstats count as sno by sourcetype 
| eval sourcetype=if(sno=1,sourcetype,"") 
| fields - sno

对于您的用例,我认为这应该可行

| stats list(TransactionNumber) list(TransactionTime) by Location Client
| streamstats count as sno by Location 
| eval Location=if(sno=1,Location,"") 
| fields - sno

如果这解决了您的问题,请花点时间接受答案。这可以通过单击答案旁边的复选标记将其从灰色切换为填充来完成!

干杯

于 2020-09-01T15:11:41.117 回答
1

我会这样做:

index=ndx sourcetype=srctp Location=* Client=* TransactionNumber=* TransactionTime=*
| eval TNTT=TransactionNumber+" sep "+TransactionTime
| stats values(TNTT) as TNTT by Location Client
| rex field=TNTT "(?<TransactionNumber>\S+) sep (?<TransactionTime>.+)"
| table Location Client TransactionNumber TransactionTime

这样做是将时间和数字的独特的一对一映射(如您所描述的那样)通过该stats values()行进行结转,然后将它们拆分回来。

可能想要| mvexpand TNTT在执行该rex行之前 - 以防您以后想以其他方式对表格进行排序

于 2020-09-08T20:00:00.680 回答