Splunk Search

How to create a calculated field eval coalesce follow by case statement?

ejwade
Contributor

I'm trying to create a calculated field (eval) that will coalesce a bunch of username fields, then perform match() and replace() functions within a case statement.

Here's a scenario:

  • Possible user fields: UserName, username, User_ID
  • User values need domain removed (e.g., "user@domain.com" or "ad\user" needs to be "user").

Here is how it can be done in two evals (I newlined and indented each case for readability):

 

| eval user_coalesced = coalesce(UserName, username, User_ID)
| eval user = case(
  match(user_coalesced, ".*@.*"), replace(user_coalesced, "@.*", ""),
  match(user_coalesced, "^ad\\\\"), replace(user_coalesced, "^ad\\\\", ""),
  true(), user
)

 

 Any ideas on how I can get this down to one? I thought about putting the coalesce() into each case, but that seems inefficient.

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

Building Reliable Asset and Identity Frameworks in Splunk ES

 Accurate asset and identity resolution is the backbone of security operations. Without it, alerts are ...

Cloud Monitoring Console - Unlocking Greater Visibility in SVC Usage Reporting

For Splunk Cloud customers, understanding and optimizing Splunk Virtual Compute (SVC) usage and resource ...

Automatic Discovery Part 3: Practical Use Cases

If you’ve enabled Automatic Discovery in your install of the Splunk Distribution of the OpenTelemetry ...