更新时间:2023-06-07 GMT+08:00

函数列表

ResourceQL支持以下函数:

表1 数学运算函数

函数

功能描述

abs(x)

返回x的绝对值。

ceil/ceiling(x)

把小数x向上取整。

floor(x)

把小数x向下取整。

pow/power(x, p) → double

计算x^p。

round(x)

把小数x四舍五入取整。

round(x, d)

把小数x四舍五入保留d位小数。

sign(x)

返回x的符号,正数是1负数是-1。

表2 字符串函数

函数

功能描述

concat(str1, str2, ..., strn) → string

合并字符串。

chr(n) → string

把数字n转化成对应的unicode字符。

codepoint(str) → int

把unicode字符转化成数字。

length(str) → int

返回字符串的长度。

lower/upper(str) → string

把字符串变换成全小写/大写。

replace(str, sub) → string

把字符串str里所有sub子串都删除。

replace(str, sub, replace) → string

把字符串str里所有sub子串都替换成replace。

reverse(str) → string

把字符串str翻转。

split(str, delimiter) → array

把字符串str按照delimiter切割成数组。

strpos(str, sub) → int

返回str里第一次出现sub的下标。下标从1开始,不存在返回0。

strpos(str, sub, n) -> int

返回str里第n次出现sub的下标。下标从1开始,不存在返回0。

strrpos(str, sub) → int

返回str里倒数第一次出现sub的下标。下标从1开始,不存在返回0。

strrpos(str, sub, n) -> int

返回str里倒数第n次出现sub的下标。下标从1开始,不存在返回0 。

substr(str, start) → string

返回str里从start开始的子串。

substr(str, start, length) → string

返回str里从start开始,长度为length的子串。

trim/lstrim/rstrim(str)

把str里开头和结尾/开头/结尾的空白字符删掉。

表3 数组函数

函数

功能描述

all_match(array(T), function(T, boolean)) → boolean

询问每个函数是否都满足给定函数。

any_match(array(T), function(T, boolean)) → boolean

询问是否存在元素满足给定函数。

array_average(a) → double

询问是否存在元素满足给定函数。

array_distinct(a) → array

返回数组a去重后的新数组。

array_duplicates(a) → array

返回数组a里出现次数超过一次的元素构成的新数组。

array_frequency(a) → map

统计数组中每个元素出现的次数并返回对应的map。

array_has_duplicates(a) → boolean

查询数组中是否有重复元素。

array_intersect(a, b) → array

对数组a和b的元素求个交集。

array_join(x, delimiter) → string

把数组元素连接成字符串,中间用delimiter来分隔。

array_join(x, delimiter[, null_replacement]) → string

把数组元素连接成字符串,中间用delimiter来分隔,null元素用null_replacement填充。

array_max/array_min(a)

返回数组a的最大值/最小值。

array_position(a, element) → int

查询element在数组a中的位置。如果不存在返回0。

array_position(a, element, instance) → int

查询element在数组a中的位置。如果不存在返回0。如果'instance>0',返回第'instance' 出现的位置;如果'instance < 0',返回倒数'instance'位置。

array_remove(a, element) → array

把数组a中等于element的元素都删除。

array_sort(a) → array

返回数组a排序后的新数组。

array_sort(array(T), function(<T, T>, int)) → array

返回数组a排序后的新数组。需要提供一个二元比较函数,(-1,0,1) 分别表示小于等于和大于。

array_sum(a)

返回数组a的元素和。

array_overlap(a, b) → boolean

询问a和b的交集是否为不为空。

array_union(a, b) → array

返回a和b的并集的数组。

array_except(x, y) → array

返回x中但不在y中的元素数组。

cardinality(a) → int

返回数组a的大小。

concat(a1, a2, ...) → array

合并数组,等价于'||'运算符。

contains(a, element) → boolean

判断element是否出现在数组a中。

element_at(a, index)

返回数组a中的第index个元素。如果'index < 0'将从后往前找。

filter(array(T), function(T, boolean)) → array(T)

筛选满足条件的元素组成新数组。

none_match(array(T), function(T, boolean)) → boolean

询问是否所有元素都不满足给定函数。

reverse(a) → array

把数组a前后取反。

sequence(start, stop, step)

和python的range效果类似。

shuffle(a) → array

把数组a的元素打乱。

slice(a, start, length) → array

截取数组a从start开始长度为length的子串。

transform(array(T), function(T, S)) → array(S)

把原数组变换成另一个数组。

表4 聚合函数

函数

功能描述

arbitrary(x)

返回任意一个非NULL的元素(如果存在的话)。

array_agg(x) → array

把元素合并成一个数组返回。

avg(x)→ double

返回算术平均数。

bool_and/bool_or(x) → boolean

对每个元素执行布尔AND/OR。

coalesce(value1, value2, ...)

返回第一个非NULL的元素。会被短路。

count(*)/count(x) → int

计数。

greatest(value1, value2, ..., valueN)

返回给定同类型权值里最大的权值。

histogram(x) → map

返回一个map,统计了x里每个不同的权值以及他们对应的个数。

least(value1, value2, ..., valueN)

返回给定同类型权值里最小的权值。

max/min(x, n=1)

返回元素里的最大/小值,第n大/小值。

max_by/min_by(x, y, n=1)

根据元素y的最大/小值或第n大/小值,返回对应的元素x。

geometric_mean(x) → double

返回几何平均数。

set_agg(x) → array

把元素去重后合并成一个数组返回。

set_union(x) → array

把每个读入的数组的元素求并,返回并集的数组。

sum(x)

返回和。

multimap_agg(key, value)

返回从输入键/值对创建的多重映射。

map_agg(key, value)

返回从输入键/值对创建的映射。

表5 时间函数

函数

功能描述

now() → date

获取当前时间。

date_diff(unit, timestamp1, timestamp2) → int

返回timestamp2-timestamp1在unit下的时间间隔,unit的可选值:millisecond、second、minute、hour、day、week、month、quarter、year。

date_parse(string, format) → timestamp

通过指定格式format,将字符串转为时间格式。