"按时间窗口切分方式进行聚合结果查询,比如温度传感器每秒采集一次数据,但需查询每隔 10 分钟的温度平均值; 查询结果格式为: [图片]"
按时间窗口切分方式进行聚合结果查询,比如温度传感器每秒采集一次数据,但需查询每隔 10 分钟的温度平均值;查询结果格式为:
其实主要将 time 里边的分处理下就行,比如 01 分到 04 分:59 秒的给他变成 0,然后 05 分到 09 分的变成 5 就行简单做了个例子,原始数据:
集算器脚本:
A2 的结果:
A3 结果:
A2 公式:=A1.new(string(time,“yyyy-MM-dd HH”)+“:”+string(if(minute(time)<10,“0”))+string(int(minute(time)/5)*5)+“:00”:time,temp:temp)公式略复杂些,看下思路就行,主要是时间的处理,用 run 函数直接更改 A1 也行
这个是不是有两种逻辑:1、数学意义上的 10 分钟,累计到 600 秒就分组,因为每秒生成一个数据,也就是 600 个一组,ntile(#,600)2、时间意义上的 10 分钟,也就是分钟 minute 能被 10 整除。以下模拟数据供参考:
感谢大佬的方案,写得太高级了,试过了有效👍
之前用 java 写想这么处理的,但是在 SPEL 里面不知道用什么函数,多谢大佬的解答,感激不尽👍
其实主要将 time 里边的分处理下就行,比如 01 分到 04 分:59 秒的给他变成 0,然后 05 分到 09 分的变成 5 就行
简单做了个例子,原始数据:
集算器脚本:
A2 的结果:
A3 结果:
A2 公式:=A1.new(string(time,“yyyy-MM-dd HH”)+“:”+string(if(minute(time)<10,“0”))+string(int(minute(time)/5)*5)+“:00”:time,temp:temp)
公式略复杂些,看下思路就行,主要是时间的处理,用 run 函数直接更改 A1 也行
这个是不是有两种逻辑:
1、数学意义上的 10 分钟,累计到 600 秒就分组,因为每秒生成一个数据,也就是 600 个一组,ntile(#,600)
2、时间意义上的 10 分钟,也就是分钟 minute 能被 10 整除。
以下模拟数据供参考:
感谢大佬的方案,写得太高级了,试过了有效👍
之前用 java 写想这么处理的,但是在 SPEL 里面不知道用什么函数,多谢大佬的解答,感激不尽👍