Splunk

Eval Functions

The eval command calculates an expression and puts the resulting value into a field (e.g. “…| eval force = mass * acceleration”). The following table lists the functions eval understands, in addition to basic arithmetic operators (+ – * / %), string concatenation (e.g., ‘…| eval name = last . “, ” . last’), boolean operations (AND OR NOT XOR < > <= >= != = == LIKE)

Function Description Examples
abs(X) Returns the absolute value of X. abs(number)
case(X,”Y”,…) Takes pairs of arguments X and Y, where X arguments are Boolean expressions that, when evaluated to TRUE, return the corresponding Y argument. case(error == 404, "Not found", error == 500,"Internal Server Error", error == 200, "OK")
cidrmatch(“X”,Y) Identifies IP addresses that belong to a particular subnet. cidrmatch("123.132.32.0/25",ip)
ceil(X) Ceiling of a number X. ceil(1.9)
coalesce(X,…) Returns the first value that is not null. coalesce(null(), "Returned val", null())
exact(X) Evaluates an expression X using double precision floating point arithmetic. exact(3.14*num)
exp(X) Returns eX exp(3)
floor(X) Returns the floor of a number X floor(1.9)
if(X,Y,Z) If X evaluates to TRUE, the result is the second argument Y. If X evaluates to FALSE, the result evaluates to the third argument Z. if(error==200, "OK", "Error")
isbool(X) Returns TRUE if X is Boolean. isbool(field)
isint(X) Returns TRUE if X is an integer isint(field)
isnotnull(X) Returns TRUE if X is not NULL. isnotnull(field)
isnull(X) Returns TRUE if X is NULL isnull(field)
isnum(X) Returns TRUE if X is a number isnum(field)
isstr() Returns TRUE if X is a string. isstr(field)
len(X) This function returns the character length of a string X len(field)
like(X,”Y”) Returns TRUE if and only if X is like the SQLite pattern in Y. like(field, "foo%")
ln(X) Returns its natural log ln(bytes)
log(X,Y) Returns the log of the first argument X using the second argument Y as the base. Y defaults to 10. log(number,2)
lower(X) Returns the lowercase of X. lower(username)
ltrim(X,Y) Returns X with the characters in Y trimmed from the left side. Y defaults to spaces and tabs. ltrim(" ZZZabcZZ ", " Z")
match(X,Y) Returns if X matches the regex pattern Y match(field, "^\d{1,3}\.\d$")
max(X,…) Returns the max. max(delay, mydelay)
md5(X) Returns the MD5 hash of a string value X. md5(field)
min(X,…) Returns the min min(delay, mydelay)
mvcount(X) Returns the number of values of X mvcount(multifield)
mvfilter(X) Filters a multi-valued field based on the Boolean expression X. mvfilter(match(email, "net$"))
mvindex(X,Y,Z) Returns a subset of the multivalued field X from start position (zerobased) Y to Z (optional). mvindex( multifield, 2)
mvjoin(X,Y) Given a multi-valued field X and string delimiter Y, and joins the individual values of X using Y. mvjoin(foo, ";")
now() Returns the current time, represented in Unix time. now()
null() This function takes no arguments and returns NULL. null()
nullif(X,Y) Given two arguments, fields X and Y, and returns the X if the arguments are different; returns NULL, otherwise nullif(fieldA, fieldB)
pi() Returns the constant pi. pi()
pow(X,Y) Returns XY. pow(2,10)
random() Returns a pseudo-random number ranging from 0 to 2147483647 random()
relative_time(X,Y) Given epochtime time X and relative time specifier Y, returns the epochtime value of Y applied to X. relative_time(now(),"-1d@d")
replace(X,Y,Z) Returns a string formed by substituting string Z for every occurrence of regex string Y in string X. Returns date with the month and day numbers switched, so if the input was 1/12/2009 the return value would be 12/1/2009: replace(date, "^(\d{1,2})/(\d{1,2})/", "\2/\1/")
round(X,Y) Returns X rounded to the amount of decimal places specified by Y. The default is to round to an integer. round(3.5)
rtrim(X,Y) Returns X with the characters in Y trimmed from the right side. If Y is not specified, spaces and tabs are trimmed. rtrim(" ZZZZabcZZ ", " Z")
searchmatch(X) Returns true if the event matches the search string X searchmatch("foo AND bar")
split(X,”Y”) Returns X as a multi-valued field, split be delimiter Y. split(foo, ";")
sqrt(X) Returns the square root of X. sqrt(9)
strftime(X,Y) Returns epochtime value X rendered using the format specified by Y. strftime(_time, "%H:%M")
strptime(X,Y) Given a time represented by a string X, returns value parsed from format Y. strptime(timeStr, "%H:%M")
substr(X,Y,Z) Returns a substring field X from start position (1-based) Y for Z (optional) characters substr("string", 1, 3)+substr("string", -3)
time() Returns the wall-clock time with microsecond resolution. time()
tonumber(X,Y) Converts input string X to a number, where Y (optional, defaults to 10) defines the base of the number to convert to. tonumber("0A4",16)
tostring(X,Y) Returns a field value of X as a string. If the value of X is a number, it reformats it as a string; if a Boolean value, either "True" or "False". If X is a number, the second argument Y is optional and can either be "hex" (convert X to hexadecimal), "commas" (formats X with commas and 2 decimal places), or "duration" (converts seconds X to readable time format HH:MM:SS). This example returns: foo=615 and foo2=00:10:15: … | eval foo=615 | eval foo2 = tostring(foo, "duration")
trim(X,Y) Returns X with the characters in Y trimmed from both sides. If Y is not specified, spaces and tabs are trimmed. trim(" ZZZZabcZZ ", " Z")
typeof(X) Returns a string representation of its type. This example returns: "NumberStringBoolInvalid": typeof(12)+ typeof("string")+typeof(1==2)+ typeof(badfield)
upper(X) Returns the uppercase of X upper(username)
urldecode(X) Returns the URL X decoded. urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
validate(X,Y,…) Given pairs of arguments, Boolean expressions X and strings Y, returns the string Y corresponding to the first expression X that evaluates to False and defaults to NULL if all are True. validate(isint(port), "ERROR: Port is not an integer", port >= 1 AND port <= 65535, "ERROR: Port is out of range")