函数参考

SPL 表达式函数:签名与说明

函数参考

函数用于 eval、stats、where 等表达式中。签名里的 T 表示与入参一致的返回类型;number 为数值;string 为字符串。

用法

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

比较运算符 =、!=、<、<=、>、>= 支持字符串与整数混比。


条件与空值

函数签名说明
ifif(boolean, T, T) -> T条件为真返回第二参数,否则第三参数
ifnullifnull(T, T) -> T第一参数为 null 时返回第二参数
isnullisnull(T) -> integer是否为 null
isnotnullisnotnull(T) -> boolean是否非 null
is null / is not null谓词形式与上等价的谓词写法
nullifnullif(T, T) -> T两参数相等时返回 null,否则返回第一参数
cidrmatchcidrmatch(ip, cidr) -> booleanIP 是否落在 CIDR 内
likelike(text, pattern) -> boolean模式匹配;% 多字符,_ 单字符
not likenot like(text, pattern) -> boolean模式不匹配
… | eval err = if(status == 200, "OK", "Error")
… | where like(field, "foo%")
… | where cidrmatch(src_ip, "10.0.0.0/8")

三角函数

函数签名说明
acosacos(number) -> double反余弦
asinasin(number) -> double反正弦
atanatan(number) -> double反正切
atan2atan2(number, number) -> double双参数反正切
coscos(number) -> double余弦
cotcot(number) -> double余切
sinsin(number) -> double正弦
tantan(number) -> double正切
degreesdegrees(number) -> double弧度转角度
radiansradians(number) -> double角度转弧度

日期与时间

函数签名说明
adddateadddate(date, INTERVAL expr unit) -> date日期加法
subdatesubdate(date, INTERVAL expr unit) -> date日期减法
date_adddate_add(date, INTERVAL expr unit) -> date同日期加法
date_subdate_sub(date, INTERVAL expr unit) -> date同日期减法
nownow() -> datetime当前时间
datedate(expr) -> date取日期部分
timetime(expr) -> time取时间部分
timestamptimestamp(date) -> timestamp转为时间戳类型
date_formatdate_format(date, string) -> string按格式串输出
day / dayofmonthdayofmonth(date) -> integer日(1–31)
daynamedayname(date) -> string星期名称
dayofweekdayofweek(date) -> integer星期序号
dayofyeardayofyear(date) -> integer一年中的第几天
monthmonth(date) -> integer月
monthnamemonthname(date) -> string月名称
quarterquarter(date) -> integer季度
weekweek(date[, mode]) -> integer周序号
yearyear(date) -> integer年
hourhour(time) -> integer时
minuteminute(expr) -> integer分
secondsecond(time) -> integer秒
microsecondmicrosecond(expr) -> integer微秒
time_to_sectime_to_sec(time) -> long时间转秒
to_daysto_days(date) -> long日期转天数
from_daysfrom_days(N) -> date天数转日期
intervalINTERVAL expr unit时间间隔字面量

统计(用于 stats)

函数签名说明
countcount([field]) -> long计数
sumsum(number) -> number求和
avgavg(number) -> number平均
minmin(field) -> field最小
maxmax(field) -> field最大
valuesvalues(field) -> multivalue去重归并字段值
earliestearliest(field) -> field最早侧聚合值;建议先 sort _time
latestlatest(field) -> field最晚侧聚合值;建议先 sort _time
var_pop / variancevar_pop(number) -> double总体方差
var_sampvar_samp(number) -> double样本方差
stddev_pop / std / stddevstddev_pop(number) -> double总体标准差
stddev_sampstddev_samp(number) -> double样本标准差
index="unix"
| sort _time
| stats count() as total, earliest(src_ip) as first_ip, latest(action) as last_action by user

数学

函数签名说明
absabs(number) -> number绝对值
ceil / ceilingceil(number) -> number向上取整
floorfloor(number) -> number向下取整
roundround(number) -> number四舍五入
truncatetruncate(number, number) -> number截断小数位
expexp(number) -> numbere 的幂
lnln(number) -> double自然对数
loglog(number) -> double 或 log(number, number) -> double对数
log2log2(number) -> double以 2 为底
log10log10(number) -> double以 10 为底
pow / powerpow(number, number) -> number幂
sqrtsqrt(number) -> number平方根
modmod(number, number) -> number取模
pipi() -> double圆周率
ee() -> double自然常数 e
randrand() -> number 或 rand(number) -> number随机数
signsign(number) -> number符号
convconv(string, int, int) -> string进制转换
crc32crc32(string) -> numberCRC32

算术运算符:+ - * / %。


文本

函数签名说明
tostringtostring(value[, format]) -> string转为字符串;数字可选 hex / commas / duration
lowerlower(string) -> string小写
upperupper(string) -> string大写
trimtrim(string) -> string去两端空白
ltrimltrim(string) -> string去左空白
rtrimrtrim(string) -> string去右空白
concatconcat(str1, str2, ...) -> string拼接
concat_wsconcat_ws(sep, string, ...) -> string带分隔符拼接
substr / substringsubstring(string, int[, int]) -> string子串
leftleft(string, int) -> string左侧截取
rightright(string, int) -> string右侧截取
lengthlength(string) -> integer长度
locatelocate(substr, string[, pos]) -> integer查找位置
replacereplace(string, from, to) -> string替换
asciiascii(string) -> integer首字符 ASCII
strcmpstrcmp(string, string) -> integer字符串比较
regexpregexp(...)正则相关
… | eval lowuser = lower(username)
… | eval n = tostring(bytes, "commas")

多值

函数签名说明
mvindexmvindex(mv, integer) -> value取多值字段指定下标

常与命令 makemv / mvexpand / mvcombine 配合。


窗口函数

函数签名说明
row_numberrow_number() -> integer分区内行号
rankrank() -> integer排名(可并列跳号)
dense_rankdense_rank() -> integer密集排名

类型转换

引擎提供 cast_to_string / cast_to_int / cast_to_long / cast_to_double / cast_to_boolean / cast_to_date / cast_to_time / cast_to_timestamp / cast_to_datetime 等转换函数,按目标类型选用。

On this page