需要通过将一个查询的结果反馈给另一个查询来合并Splunk查询

时间:2019-07-26 17:22:46

标签: splunk

我们每天必须搜索数百个警报,以测试新的欺诈系统。问题是我们必须检查每个警报,这非常耗时。

第一个查询获取警报列表以及每个警报的详细信息。

第二个查询使用已使用的ID,并搜索3个特定事件,可以是0到许多。 如果没有记录,则在用户ID中添加“ NULL”,在设备ID中添加“ N”,并在金额中添加$ 0.00

两个查询的结果都需要放入表格中以进行提取。

index=mbank_p_database sourcetype=mbank_event EventTypeID=1095 
| dedup OLBUserID
| table _time, SessionID, EventTypeID, OLBUserID, score, risk_rating, reason_code 
| sort _time
index=mbank_p_database sourcetype=mbank_event EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012 OLBUserID=<Results from 1st query>
| table UDID, Amount

如果第二次查询用户ID没有结果,则输入“ UDID” =“ N”,“ Amount” = $ 0.00

``

Table layout of results of combined query:
--_time = Date\Timestamp (1st Query)
--SessionID = "SessionID" (1st Query)
--OLBUserID = "UserID" (1st Query)
--Deposit? = ("Y" or "N") (2nd Query)
--score = "Score" (1st Query)
--risk_rating = "Rating" (1st Query)
--reason_code = "Reason Code"  (1st Query)

2 个答案:

答案 0 :(得分:0)

“”立即使我想到了一个子搜索,但是在这种情况下,由于该子搜索返回了太多字段,因此该方法不起作用。

尝试使用stats组合两个搜索。像这样:

index=mbank_p_database sourcetype=mbank_event (EventTypeID=1095 OR EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012) 
| stats values(*) as * by OLBUserID
| table _time, SessionID, EventTypeID, OLBUserID, score, risk_rating, reason_code 

答案 1 :(得分:0)

我最终不得不改变搜索的方式。首先,您必须搜索仅具有“ EventTypeID = 1095”的所有项目。然后获取这些结果,并将其添加到子搜索中。我添加了空白字段,以便用户可以将其直接导出到电子表格中进行研究。

最终SPL:

index=mbank_p_database sourcetype=mbank_event EventTypeID=1095
| dedup OLBUserID 
| join type=left SessionID 
    [ search index=mbank_p_database sourcetype=mbank_event EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012]
| eval "Deposit?"=case(Amount<=0.0000, "N", Amount>0.0000, "Y") 
| table _time, SessionID, UDID, OLBUserID, "Deposit?", Amount, "Bank#", "Acct Type", "Acct#", "Fraud?", "Comments", score, risk_rating, reason_code 
| sort -_time