问题描述
嗨,我在splunk中有一些此类形式的事件-
位置:一些值(多个事件中可以有相同的值)
客户:一些值(在多个事件中可以有相同的值)
交易编号:一些值(每个事件唯一)
交易时间:一些值(每个事件唯一)
现在我想要这种形式的表格-
基本上,每个位置可以有多个客户,每个客户可以有不同的交易。交易号和交易时间是唯一的,并且具有一对一映射。
我在splunk中使用此查询-
|位置客户端的统计信息列表(TransactionNumber)列表(TransactionTime)
正在发生的事情是我正在获得位置和客户的唯一组合,但是我想要针对特定位置列出唯一的客户。
这就是我要得到的东西-
如何修改查询以实现相同的目的?
解决方法
这是使用_internal索引的完整示例
scales=list(alternating=3)
对于您的用例,我认为这应该可行
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
如果这可以解决您的问题,请花一点时间接受答案。这可以通过单击答案旁边的复选标记将其从灰色切换为填充来完成!
欢呼
,我会这样做:
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
-如果以后要以其他方式对表格进行排序