函数
当前系统内置了如下函数。
函数名称 |
函数分类 |
函数功能 |
举例 |
---|---|---|---|
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 |
说明
- 只有当分析任务类型为”聚合计算“时,计算公式中才能使用“时序聚合”类函数