udf - PPTV/Pike GitHub Wiki

PseudoFunction

函数 说明
if(condition, true_expression,false_expression) if表达式
output(constant_expression) 输出常量或常量表达式结果
OUTPUTCTX() 必须在output内,输出当前时间
move(period, aggregate_expression) 以输出窗口滑动,聚合最近period时间内数据,聚合窗口必须为滑动窗口倍数
accumulate(period, aggregate_expression) 以输出窗口累加,累计聚合period时间内数据,累计窗口必须为输出窗口整数倍,每个累计周期过后从0开始累加

BuiltinAggregator

函数 说明
count(distinct) 计数
sum 求和
max 求最大值
min 求最小值
avg 求平均值
LinearCount(maxCardinality, expression) 使用LinearCount算法求distinct count的基数不超过maxCardinality,误差低于1%
LinearCountEx(bitMapBytes, expression) 指定LinearCount算法的位图byte数组大小
LoglogAdaptiveCount(k, expression) 指定LogLogAptiveCount算法桶的个数为1<<k, 哈希值二进制前k位为桶index
HyperLoglogCount(k, expression) 指定HyperLoglogCount算法桶的个数为1<<k, 哈希值二进制前k位为桶index

BuiltinFunction

类型转换

函数 说明
convert(constant_expression, expression) 将expression结果转换成与constant_expression相同的类型
boolean(expression) 将expression结果转换成boolea类型
string(expression) 将expression结果转换成String类型
str(expression) 同String
byte(expression) 将expression结果转换成byte类型
short(expression) 将expression结果转换成short类型
int(expression) 将expression结果转换成int类型
long(expression) 将expression结果转换成long类型
float(expression) 将expression结果转换成float类型
double(expression) 将expression结果转换成double类型

取值

函数 说明
mapget(map, key) 从map中获取key的值
get(map, key) 同mapget
getfield(str, n, separator) 以separator分隔str后取第n个元素

字符串

函数 说明
strequal(str1, str2) 比较俩个字符串是否相等
strenotqual(str1, str2) 比较俩个字符串是否不相等
strcompare(str1, str2) 比较两个字符串
strlen(str) 求字符串长度
strbeginwith(str, prefix) 判断字符串是否以指定字符开头
strbeginwith(str, suffix) 判断字符串是否以指定字符结尾
strisnullorempty(str) 判断字符串是否为空或空字符串
strisnotempty(str) 判断字符串不为空串
strleft(str, n) 取左边n个字符
strindex(str, sub) 取子串位置
strsub(str, begin, end) 取子串
strlastindex(str, sub) 反向取子串位置
concat(str1, str2) 连接两个字符串
concattriple(str1, str2, str3) 连接三个字符串

数学

函数 说明
e() 返回自然E值
pi() 返回π值
abs(expression) 求绝对值
ceil(expression) 按ceil求值
floor(expression) 按floor求值
roud(expression) 按四舍五入求值
rand() 取随机数

时间

函数 说明
CurPeriodBeginDate() 当前窗口开始日期
CurPeriodEndDate() 当前窗口结束日期
CurPeriodBeginTime() 当前窗口开始时间
CurPeriodEndTime() 当前窗口结束时间
CurPeriodBeginLong() 当前窗口开始日期
CurPeriodEndLong() 当前窗口结束日期
CurDate() 当前日期
CurTime() 当前时间
Date_Format(date, format) 格式化日期
hour(time) 取小时
Minute(time) 取分钟
Second(time) 取秒
Time_Format(time, format) 格式化时间
AddSeconds(time, sec) 增加时间
dt() 同CurPeriodEndLong

other

函数 说明
size(collection) 求长度
explode(collection) 展开map或array