函数可以理解为封装了运算能力的合集,每个函数都有特定的功能。比如 countIf() 计算个数,sum() 用来求和,string() 用来转换其他类型为字符串类型等等。
函数类型 | 函数 | 语法 | 示例 |
统计函数 | avg | 用于对字段取平均值,仅接受数值类型 avg(field) | avg({流程节点}.{节点估分}) |
| avgIf | 通过条件判断来获取字段的平均值 avgIf(field, condition) | avgIf({流程节点}.{节点估分},each>=1) |
| count | 获取字段包含值数量 count(field) | count({流程节点}.{名称}) |
| countIf | 通过条件判断来获取字段包含值数量 countIf(field,condition) | countIf({流程节点}.{名称}, match(each,"开发")) |
| countDistinct | 用于对字段进行去重计数 countDistinct(field) | countDistinct({流程节点}.{名称}) |
| countDistinctIf | 去重计数(带条件的) countDistinctIf(field, condition) | countDistinctIf({流程节点}.{名称}, match(each,"开发")) |
| max | 用于对字段取最大值,可接受数值类型、时间类型 max(field) | max({流程节点}.{节点估分}) |
| maxIf | 通过条件判断来获取字段的最大值 maxIf(field, condition) | maxIf({流程节点}.{节点估分}, each>=1) |
| min | 用于对字段取最小值,可接受数值类型、时间类型 min(field) | min({流程节点}.{节点估分}) |
| minIf | 通过条件判断来获取字段的最小值 minIf(field, condition) | minIf({流程节点}.{节点估分}, each>=1) |
| median | 用于对字段取中位数,可接受数值类型、时间类型 median(field) | median({流程节点}.{节点估分}) |
| medianIf | 通过条件判断来获取字段的中位数 medianIf(field, condition) | medianIf({流程节点}.{节点估分}, each>=1) |
| sum | 用于对字段取和,仅接受数值类型 sum(field) | sum({流程节点}.{节点估分}) |
| sumIf | 通过条件判断来对字段求和 sumIf(field, condition) | sumIf({流程节点}.{节点估分}, each>=1) |
逻辑函数 | not | 取非,将 true 与 false 之间互相转换 not(condition) | not(false) |
| empty | 判断一个字段是否为空,空返回 true,非空返回 false empty(field) | empty({优先级}) |
| isNull | 判断一个字段是否为空,空返回 true,非空返回 false isNull(field) | isNull({优先级}) |
条件函数 | if | 条件判断,用于两个值之间的比较,如 if 的第一个参数为 true,则返回第二个参数的值,否则返回第三个参数的值 if(condition, v1, v2) | if({优先级} == "P0", 0, 1) |
数值类操作运算 | sqrt | 开根号,接受一个数值类型的参数并返回该数值类型的平方根 sqrt(number) | sqrt(9) |
| pow | 求幂,用于数值的求幂,number1 表示底数,number2 表示幂 pow(number1, number2) | pow(2,3) |
| round | 保留几位小数,number1 表示原始数值,number2 表示需保留的小数位数 round(number1, number2) | round(3.1415926, 2) |
| ceil | 向上取整 ceil(number) | ceil(1.2) |
| floor | 向下取整 floor(number) | floor(2.1) |
日期类操作函数 | toHour | 提取小时,将输入的时间提取为 24 小时制式小时。 toHour(date) | toHour(date("2021-05-01 18:25:30")) |
| toMinute | 提取分钟,将输入的时间提取分钟数。 toMinute(date) | toMinute(date("2021-05-01 18:25:30")) |
| toMonth | 提取月份,将输入的时间提取月份。 toMonth(date) | toMonth(date("2021-05-01 18:25:30")) |
| toSecond | 提取秒,将输入的时间提取秒数。 toSecond(date) | toSecond(date("2021-05-01 18:25:30")) |
| toYear | 提取年 toYear(date) | toYear(date("2021-05-08")) == 2021 |
| getWeekOfYear | 提取日期所在周 getWeekOfYear(date) | getWeekOfYear(today()) |
| getYear | 提取日期所在年 getYear(date) | getYear(today()) |
| getMonth | 提取日期所在月份 getMonth(date) | getMonth(today()) |
| toStartOfDay | 获取当前天的起始时间,向前取整到今天开始。 toStartOfDay(date) | toStartOfDay(date("2021-05-15 18:25:30")) |
| toStartOfHour | 获取当前小时的起始时间,向前取整到当前小时开始。 toStartOfHour(date) | toStartOfHour(date("2021-05-15 18:25:30")) |
| toStartOfMinute | 获取当前分钟的起始时间,向前取整到当前分钟开始。 toStartOfMinute(date) | toStartOfMinute(date("2021-05-15 18:25:30")) |
| toStartOfMonth | 获取当前月份的起始时间,向前取整到当前月份的第一天。 toStartOfMonth(date) | toStartOfMonth(date("2021-05-15 18:25:30")) |
| toStartOfQuarter | 获取当前季度的起始时间,向前取整到当前季度的第一天。 toStartOfQuarter(date) | toStartOfQuarter(date("2021-05-15 18:25:30")) |
| toStartOfYear | 获取当前年份的起始时间,向前取整到当前年度的第一天。 toStartOfYear(date) | toStartOfYear(date("2021-05-15 18:25:30")) |
| hour | 返回两个日期之间的小时数 hour(date1, date2) | hour(date("2021-08-09 10:00:30"), date("2021-08-09 12:00:30")) |
| second | 返回两个日期之间的秒数 second(date1, date2) | second(date("2021-08-09 10:00:59"), date("2021-08-09 12:00:15")) |
| daysBetween | 返回两个日期之间的天数,值为 date2-date1 的结果 daysBetween(date1, date2) | daysBetween(today(), date("2022-09-06")) |
| workdaysBetween | 返回两个日期之间的工作日天数,值为 date2-date1 的结果 workdaysBetween(date1, date2) | workdaysBetween(today(), date("2022-09-06")) |
| now | 返回当前时间 now() | now() |
| today | 返回当前时间 today() | today() |
| dateAdd | 计算日期增减计算后的返回值 dateAdd(date, number) | dateAdd(today(), -60) |
字符串操作函数 | length | 返回字符串的长度。 length(string) | length("meego") == 5 |
| match | 判断第一个参数是否包含第二个参数,是返回 true,反之返回 false match(string1,string2) | match("meego", "go") |
| lower | 将字符串中的英文字符转换为小写。 lower(string) | lower("MEEGO") |
| upper | 将字符串中的英文字符转换为大写。 upper(string) | upper("meego") |
| reverse | 反转字符串。 reverse(string) | reverse("meego") |
| subString | 以字符为单位截取指定位置字符串 subString(string,start,end) | subString("meego", 1, 3) |
| concat | 将参数中的多个字段/字符串拼接。 concat(string1,string2) | concat("mee", "go") |
类型转换函数 | string | 将一个值强行转为 string 类型 string(field) | string(1) |
| date | 将日期类型的字符串转换成日期类型 date(string) | date("2022-08-02") |
| bool | 将某值转换成 bool 类型 bool(field) | bool(1) |
容器操作函数 | contains | 判断数组是否包含某一个元素,是返回 true,反之返回 false contains(array, elem) | contains([1, 2, 3], 1) |
| containsAny | 判断两个数组是否有交集,是返回 true,反之返回 false containsAny(array1, array2) | containsAny([1, 2, 3], [2, 3, 4]) |
| filter | 过滤数组元素 filter(array, condition) | filter([1, 2, 3], each % 2 == 0) |
| join | 拼接字符串数组 join(array<string>, char) | join(["1", "2"], ",") |
特殊函数 | timeline | 输出时间轴,支持 day、workday、week、bi-week、month、bi-month、quarter 与 year 输出,不能与其他函数混合使用 timeline(startTime,endTime, "day") | timeline(date("2021-05-01"), date("2021-05-03"), "day") |
| timelineCursor | 取当前 timeline 时间切片日期 timeline_cursor() | dateAdd(timeline_cursor(), -60) |