Functions

SPL expression functions: signatures and descriptions

Functions

Functions are used in eval, stats, and where expressions. In signatures, T means the return type matches the argument; number is numeric; string is text.

Usage

… | eval new_field = lower(username)
… | stats count() as total, avg(bytes) by src_ip
… | where like(host, "web%")

Comparison operators = != < <= > >= support string/integer mixed comparison.


Conditional and null

FunctionSignatureDescription
ifif(boolean, T, T) -> TIf true, second arg; else third
ifnullifnull(T, T) -> TIf first is null, return second
isnullisnull(T) -> integerNull test
isnotnullisnotnull(T) -> booleanNon-null test
is null / is not nullpredicate formPredicate equivalents
nullifnullif(T, T) -> TNull if equal; else first
cidrmatchcidrmatch(ip, cidr) -> booleanIP in CIDR
likelike(text, pattern) -> booleanPattern match; % multi, _ single
not likenot like(text, pattern) -> booleanPattern does not match
… | eval err = if(status == 200, "OK", "Error")
… | where like(field, "foo%")
… | where cidrmatch(src_ip, "10.0.0.0/8")

Trigonometric

FunctionSignatureDescription
acosacos(number) -> doubleInverse cosine
asinasin(number) -> doubleInverse sine
atanatan(number) -> doubleInverse tangent
atan2atan2(number, number) -> doubleTwo-argument arctangent
coscos(number) -> doubleCosine
cotcot(number) -> doubleCotangent
sinsin(number) -> doubleSine
tantan(number) -> doubleTangent
degreesdegrees(number) -> doubleRadians to degrees
radiansradians(number) -> doubleDegrees to radians

Date and time

FunctionSignatureDescription
adddateadddate(date, INTERVAL expr unit) -> dateAdd interval
subdatesubdate(date, INTERVAL expr unit) -> dateSubtract interval
date_adddate_add(date, INTERVAL expr unit) -> dateSame as add
date_subdate_sub(date, INTERVAL expr unit) -> dateSame as subtract
nownow() -> datetimeCurrent timestamp
datedate(expr) -> dateDate part
timetime(expr) -> timeTime part
timestamptimestamp(date) -> timestampCast to timestamp
date_formatdate_format(date, string) -> stringFormat string
day / dayofmonthdayofmonth(date) -> integerDay of month (1–31)
daynamedayname(date) -> stringWeekday name
dayofweekdayofweek(date) -> integerWeekday number
dayofyeardayofyear(date) -> integerDay of year
monthmonth(date) -> integerMonth
monthnamemonthname(date) -> stringMonth name
quarterquarter(date) -> integerQuarter
weekweek(date[, mode]) -> integerWeek number
yearyear(date) -> integerYear
hourhour(time) -> integerHour
minuteminute(expr) -> integerMinute
secondsecond(time) -> integerSecond
microsecondmicrosecond(expr) -> integerMicrosecond
time_to_sectime_to_sec(time) -> longTime to seconds
to_daysto_days(date) -> longDate to day number
from_daysfrom_days(N) -> dateDay number to date
intervalINTERVAL expr unitInterval literal

Statistical (stats)

FunctionSignatureDescription
countcount([field]) -> longCount
sumsum(number) -> numberSum
avgavg(number) -> numberAverage
minmin(field) -> fieldMinimum
maxmax(field) -> fieldMaximum
valuesvalues(field) -> multivalueDistinct values
earliestearliest(field) -> fieldEarliest-side aggregate; prefer sort _time first
latestlatest(field) -> fieldLatest-side aggregate; prefer sort _time first
var_pop / variancevar_pop(number) -> doublePopulation variance
var_sampvar_samp(number) -> doubleSample variance
stddev_pop / std / stddevstddev_pop(number) -> doublePopulation stddev
stddev_sampstddev_samp(number) -> doubleSample stddev
index="unix"
| sort _time
| stats count() as total, earliest(src_ip) as first_ip, latest(action) as last_action by user

Math

FunctionSignatureDescription
absabs(number) -> numberAbsolute value
ceil / ceilingceil(number) -> numberCeiling
floorfloor(number) -> numberFloor
roundround(number) -> numberRound
truncatetruncate(number, number) -> numberTruncate decimals
expexp(number) -> numbere^x
lnln(number) -> doubleNatural log
loglog(number) -> double or log(number, number) -> doubleLogarithm
log2log2(number) -> doubleBase-2 log
log10log10(number) -> doubleBase-10 log
pow / powerpow(number, number) -> numberPower
sqrtsqrt(number) -> numberSquare root
modmod(number, number) -> numberModulo
pipi() -> doubleπ
ee() -> doublee
randrand() -> number or rand(number) -> numberRandom
signsign(number) -> numberSign
convconv(string, int, int) -> stringBase conversion
crc32crc32(string) -> numberCRC32

Arithmetic operators: + - * / %.


Text

FunctionSignatureDescription
tostringtostring(value[, format]) -> stringTo string; numbers may use hex / commas / duration
lowerlower(string) -> stringLowercase
upperupper(string) -> stringUppercase
trimtrim(string) -> stringTrim both ends
ltrimltrim(string) -> stringTrim left
rtrimrtrim(string) -> stringTrim right
concatconcat(str1, str2, ...) -> stringConcatenate
concat_wsconcat_ws(sep, string, ...) -> stringConcatenate with separator
substr / substringsubstring(string, int[, int]) -> stringSubstring
leftleft(string, int) -> stringLeft slice
rightright(string, int) -> stringRight slice
lengthlength(string) -> integerLength
locatelocate(substr, string[, pos]) -> integerFind position
replacereplace(string, from, to) -> stringReplace
asciiascii(string) -> integerFirst-character ASCII
strcmpstrcmp(string, string) -> integerString compare
regexpregexp(...)Regex helpers
… | eval lowuser = lower(username)
… | eval n = tostring(bytes, "commas")

Multivalue

FunctionSignatureDescription
mvindexmvindex(mv, integer) -> valueElement at index

Often used with makemv / mvexpand / mvcombine.


Window

FunctionSignatureDescription
row_numberrow_number() -> integerRow number in partition
rankrank() -> integerRank (ties may skip)
dense_rankdense_rank() -> integerDense rank

Type conversion

The engine provides converters such as cast_to_string, cast_to_int, cast_to_long, cast_to_double, cast_to_boolean, cast_to_date, cast_to_time, cast_to_timestamp, and cast_to_datetime. Pick the target type you need.

On this page