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!

Kick the Tires Before You Commit: A Hands-On Tour of the Splunk Observability Cloud ...

Evaluating an enterprise observability platform usually goes like this: fill out a form, get a free trial with ...

Deep insights, no barriers: Splunk Observability Cloud Free Edition

As software delivery cycles continue to accelerate, observability shouldn’t be a luxury — it should be a ...

Monitoring AI Agents with Splunk Observability Cloud

Let’s say I’m running a travel planning AI app in production. A user asks for three concise hotel options in ...