Getting Data In

How to match join on certain conditions within the inner search?

koshyk
Super Champion

I've got a specific requirement to fine tune a search. The search is something like..

 

<basesearch>
| fields other_fields,host,username
| join type=left host username [ `mycomplexmacro`| fields macro_fields,pci_flag,host,username]
| table *

 

 The issue I'm facing is if `pci_flag=no`, then I want to ensure the join does NOT include `host`, but if the `pci_flag=yes` I want to be strict and compare host && username. Unfortunately the `pci_flag` is not present in the <basesearch>, so the only way to determine is after the inner-search.

So essentially
I want the  search to turn to below style if `pci_flag=no` (See the host is not in join anymore)

 

| join type=left username [ `mycomplexmacro`| fields macro_fields,pci_flag,username]

 

I want the  search to turn to below style if `pci_flag=yes` (See the host present and strict)

 

| join type=left host username [ `mycomplexmacro`| fields macro_fields,pci_flag,host,username]

 

 

I tried options like below making,  but in vain

 

 eval host=if(pci_flag==no,"*",host)

 

 

Labels (1)
0 Karma
Get Updates on the Splunk Community!

Observe and Secure All Apps with Splunk

  Join Us for Our Next Tech Talk: Observe and Secure All Apps with SplunkAs organizations continue to innovate ...

Splunk Decoded: Business Transactions vs Business IQ

It’s the morning of Black Friday, and your e-commerce site is handling 10x normal traffic. Orders are flowing, ...

Fastest way to demo Observability

I’ve been having a lot of fun learning about Kubernetes and Observability. I set myself an interesting ...