比较两个不同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(),你会得到同样的结果)也许这会帮助你更容易地得到你需要的输出。