Splunk Search

Compare two searches

habrhi
Explorer

Hi guys,

I am having some issues extraction a comparaison between two different search,

Let's assume the following:
Result search A:
ID
X_584
X_571
X_568
X_999

Result search B:
ID | Valid
1 | X (571)
2 | X (584)
3 | X (382), X (584), X (571), X (568)
4 | X (568), X (571)

Desired result
ID | count | Exist
X_584 | 2 | True
X_571 | 3 | True
X_568 | 2 | True
X_999 | 0 | False

I tried to join and use match , but the problem persists first because :
- Search A has values with "_" while in search B is with space " ( )" --> tried to rex field but the search seemed so complicated
Then i was stuck on how to string match both values and put an eval for Exist field

Do you guys have any clue on how to solve this?
kind regards to those who thought about this 😉

Tags (2)
0 Karma
1 Solution

kamlesh_vaghela
SplunkTrust
SplunkTrust

@habrhi

Try this.

<<FIRST_SEARCH>>
| join type=left ID [ 
<<SECOND_SEARCH>> | rex max_match=0 field=Valid "\((?<data>\d+)\)" | stats count by data | eval ID="X_".data ] | eval Exist = if(isnull(count),"False","True") | fillnull value=0 count | table ID count Exist

Sample Search:

| makeresults | eval _raw="ID
X_584
X_571
X_568
X_999" | multikv forceheader=1 
| join type=left ID [ | makeresults | eval _raw="ID Valid
1   X (571)
2   X (584)
3   X (382), X (584), X (571), X (568)
4   X (568), X (571)" | multikv forceheader=1 | table ID Valid | rex max_match=0 field=Valid "\((?<data>\d+)\)" | stats count by data | eval ID="X_".data 
] | eval Exist = if(isnull(count),"False","True") | fillnull value=0 count | table ID count Exist

Thanks

View solution in original post

0 Karma

kamlesh_vaghela
SplunkTrust
SplunkTrust

@habrhi

Try this.

<<FIRST_SEARCH>>
| join type=left ID [ 
<<SECOND_SEARCH>> | rex max_match=0 field=Valid "\((?<data>\d+)\)" | stats count by data | eval ID="X_".data ] | eval Exist = if(isnull(count),"False","True") | fillnull value=0 count | table ID count Exist

Sample Search:

| makeresults | eval _raw="ID
X_584
X_571
X_568
X_999" | multikv forceheader=1 
| join type=left ID [ | makeresults | eval _raw="ID Valid
1   X (571)
2   X (584)
3   X (382), X (584), X (571), X (568)
4   X (568), X (571)" | multikv forceheader=1 | table ID Valid | rex max_match=0 field=Valid "\((?<data>\d+)\)" | stats count by data | eval ID="X_".data 
] | eval Exist = if(isnull(count),"False","True") | fillnull value=0 count | table ID count Exist

Thanks

0 Karma

habrhi
Explorer

Thanks alot, the rex field saved me. Appreciate it

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Quick connection discovery mode for forwarders

When a Splunk forwarder loses connectivity to its indexers, it does not always reconnect immediately. In many ...

Build and Launch AI Agents from Your Splunk Workflows

  Register We’ve all been there: juggling alerts, runbooks, and endless manual searches. What if you could ...

Splunk Cloud Application Management in Terraform

Register   On Tuesday, August 4 at 11AM PDT / 2PM EDT, we’re diving into how you can bring Infrastructure as ...