比较两个不同Splunk搜索的两列中的值

问题描述:

我是splunk的新手,在比较两个不同查询的两列中的值时遇到了问题。比较两个不同Splunk搜索的两列中的值

查询1

index="abc_ndx" source="*/jkdhgsdjk.log" call_id="**" A_to="**" A_from="**" | transaction call_id keepevicted=true | search "xyz event:" | table _time, call_id, A_from, A_to | rename call_id as Call_id, A_from as From, A_to as To 

查询2

index="abc_ndx" source="*/ jkdhgsdjk.log" call_id="**" B_to="**" B_from="**" | transaction call_id keepevicted=true | search " xyz event:"| table _time, call_id, B_from, B_to | rename call_id as Call_id, B_from as From, B_to as To 

这是我的两个不同的查询。我想将A_from列中的每个值与B_from列中的每个值进行比较,如果值匹配,则显示A_from的值。

可能吗?

我已分别运行两个查询和导出的每个的结果合并到CSV和用于vlookup功能。但问题是有最大的上限10000行可导出,所以我错过了大量的数据,作为我的数据搜索有超过10000条数据记录。 有什么帮助吗?

还没有把任何数据的时刻对此进行测试,然而,下面应该指向你在正确的方向。

当你拥有了第一个查询表整理出来,你应该“管”的搜索字符串与你的第二个搜索字符串的appendcols命令。该命令将允许您运行一个子搜索并将“列”导入到您的基本搜索中。

一旦你在同一个表中的两列。您可以使用eval命令创建一个新字段,该字段比较两个值并根据需要分配一个值。

希望这会有所帮助。

http://docs.splunk.com/Documentation/Splunk/5.0.2/SearchReference/Appendcols http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Eval

我不知道为什么有必要把这个作为两个单独的查询。一切都来自同一个源类型,并且使用几乎相同的数据。所以,我会做一些这样的:

index="abc_ndx" source="*/jkdhgsdjk.log" call_id="**" (A_to="**" A_from="**") OR (B_to="**" B_from="**") 
| transaction call_id keepevicted=true 
| search "xyz event:" 
| eval to=if(A_from == B_from, A_from, "no_match") 
| table _time, call_id, to 

这抓住从你指定sourceType的和索引的所有事件,其中有一个CALL_ID,并且或者A_to和A_from或B_to和B_from。然后它交易所有这一切,让你根据“xyz事件:”(不管是什么)进行过滤

然后它创建一个名为'to'的新字段,显示A_from当A_from == B_from时,否则显示“ NO_MATCH”(占位符,因为你没有指定,当他们不匹配应该做什么)

还有一个办法可能解决这个不使用交易。虽然没有更多细节进入基础数据,但我无法肯定地说。基本思想是,如果你有一个公共字段(在这种情况下是call_id),你可以使用统计来收集与该字段相关的值,而不是一个昂贵的事务命令。

例如:

index="abc_ndx" index="abc_ndx" source="*/jkdhgsdjk.log" call_id="**" 
| stats last(_time) as earliest_time first(A_to) as A_to first(A_from) as A_from first(B_to) as B_to first(B_from) as B_from by call_id 

使用第一个()或最后()如果每个CALL_ID只有一个值实际上并不重要。 (你甚至可以使用min()max()avg(),你会得到同样的结果)也许这会帮助你更容易地得到你需要的输出。