函数
当前系统内置了如下函数。
函数名称 | 函数分类 | 函数功能 | 举例 |
|---|---|---|---|
Sum([...]) | 数学 | 求数组的总和值 | Sum([1,2,3]),结果为6 |
Avg([...]) | 数学 | 求数组的平均值 | Avg([1,2,3]),结果为2 |
Min([...]) | 数学 | 求数组的最小值 | Min([1,2,3]),结果为1 |
Max([...]) | 数学 | 求数组的最大值 | Max([1,2,3]),结果为3 |
Len([...]) | 通用 | 求数组的长度 | Len([1,2,3,4]),结果为4 |
Get(json, key) | 通用 | 获取Json内容里面key对应的值 | Get('{"age":30, "name":"ironman"}', "name"),结果为"ironman" |
If(condition, ifTrue, ifFalse) | 通用 | 用于分支判断 当condition为true时,返回ifTrue的值,否则返回ifFalse的值 | If(1<2, 'good', 'bad'),结果为'good' If(a>b, 'yes', 'no'),则当a>b时返回 'yes', 否则返回'no' If可以嵌套使用。如If(a>b, If(a-b>2, a-b, a+b), If(a<=b, a*b, a/b)) |
Exit() | 通用 | 退出分析任务,一般和If结合使用 | If(a<0,exit(),'ok') |
UUID() | 通用 | 生成一个UUID | UUID() |
EventTime() | 通用 | 获取触发分析任务的时间,入参变化的时间或者定时任务时间,非运行分析任务的系统时间 | EventTime() |
GetAssetId(modelName,staticPropertyName,staticPropertyValue) | 通用 | 获取资产ID,根据模型名称、静态属性名称、静态属性值获取资产ID,只能获取分析任务所在资产树以内的资产ID | GetAssetId('modelName','staticPropertyA','staticValue') |
GetLastValue(assetId,propertyName,default) | 通用 | 获取资产属性在分析任务触发之前的上一次值。注意,由于上一次的值可能还未入库,不建议应用在非常频繁变化的属性上 | GetLastValue('assetId1','propertyA') |
GetLastValueEq(assetId,tagPropertyName,tagPropertyValue,targetPropertyName,default) | 通用 | 获取资产属性在分析任务触发之前的上一次值,并且会根据标签属性和标签属性值对同时刻的目标属性进行过滤。注意,由于上一次的值可能还未入库,不建议应用在变化非常频繁的属性上 | GetLastValueEq('assetId1','tagPropertyA','tagPropertyAValue','propertyB') |
GetValues(assetId,targetPropertyName,tags,default,from,to,limit) | 通用 | 获取资产属性的多个历史值,返回值数组,支持标签过滤,支持返回默认值,支持设置开始和结束时间,支持限定条数。参数: assetId:string类型,目标资产ID,必填 targetPropertyName:string类型,目标属性名称,必填 tags:object类型,过滤的标签,最多支持3个,如果无则填写为{},多个标签之间是与的关系,必填 default:object类型,默认值,必填 from:long|string类型,开始时间,可以填写为long类型的毫秒,也可以填写为string类型的时间,格式为yyyy-MM-dd'T'HH:mm:ss.SSS'Z',支持填写为""表示不指定开始时间,必填 to:long|string类型,结束时间,可以填写为long类型的毫秒,也可以填写为string类型的时间,格式为yyyy-MM-dd'T'HH:mm:ss.SSS'Z',支持填写为""表示分析任务触发时间,必填 limit:integer类型,返回条数,范围为(0,20],必填 | GetValues('assetId1','propertyA',{'tagPropertyB':123},-1,EventTime()-3600000,EventTime(),5) |
GetByIndex(json,index) | 通用 | 根据数组下标获取数组元素 | GetByIndex(["a","b"],1) |
StateTime(property, state) | 时序聚合 | 求周期内状态的持续时长,单位为毫秒 | StateTime(status, 'on'),结果为周期内status的值为on的总持续时间 |
TS_Sum(property) | 时序聚合 | 求周期内某个属性的总和值 | TS_Sum(qps),结果为周期内的总qps值。 |
sin | 数学 | 求弧度的sin值 | sin(3.14/2) =0.9999996829318346 |
cos | 数学 | 求弧度的cos值 | cos(3.14) =-0.9999987317275395 |
tan | 数学 | 求弧度的tan值 | tan(3.14/4) =0.9992039901050427 |
asin | 数学 | 求输入值的asin值 | asin(1) =1.5707963267948966 |
acos | 数学 | 求输入值的acos值 | acos(-1) =3.141592653589793 |
atan | 数学 | 求输入值的atan值 | atan(1) =0.7853981633974483 |
sqrt | 数学 | 求输入值的平方根 | sqrt(2) =1.4142135623730951,sqrt(4) =2.0 |
ceil | 数学 | 求大于等于输入值的最小整数 | ceil(3.8) =4.0,ceil(-1.2) =-1.0,ceil(0) =0.0 |
floor | 数学 | 求小于等于输入值的最大整数 | floor(3.8)=3, floor(-1.2)=-2,floor(0) =0.0 |
abs | 数学 | 求输入值的绝对值 | abs(1.23) =1.23, abs(-1.23) =1.23 |
log | 数学 | 求输入值的自然对数值 | log(2.718) =0.999896315728952 |
log10 | 数学 | 求输入值以10为底的对数值 | log(100) =2.0 |
说明
- 只有当分析任务类型为”聚合计算“时,计算公式中才能使用“时序聚合”类函数

