Skip to content

数据过滤脚本

设备一直在上报数据, 但大部分值根本没变化。aiots 的数据过滤脚本在采集和入库之间加了一道关卡, 用几行 JS 控制哪些数据写进数据库, 把无效存储压到最低。

📖 配置教程:脚本引擎教程

什么时候会用到这个功能

工况稳定, 设备每秒上报的都是同一个值。 一个压力变送器稳定运行时每秒上报一次, 值都是 0.5MPa, 一天 86400 条记录, 有用的可能就几十条。用 methods.isChange(data) 判断值变没变, 变了才入库, 重复值直接拦在库外。

大量设备持续上报重复值, 数据库不断扩容。 水务项目 200 多台流量计和压力变送器, 稳定运行时每天入库近 2000 万条, 其中 95% 以上是重复值, 查历史卡、备份大、存储贵。配数据过滤后日入库量从 2000 万条降到 80 万条以内, 历史查询秒级返回。

有些属性变化太频繁, 想降频存储。 振动传感器每秒都在变, 全部入库数据量太大。用 methods.isGeInterval(data, 30) 表示距上次入库超过 30 秒才写一条, 相当于降频存储。两种方式可组合: 值变了立刻入库, 值没变但过了指定时间也写一条, 保证不漏数据。

想改入库规则, 不想找开发发版。 传统去重逻辑写在后端, 改一个属性的过滤规则就要改代码、测试、发版。aiots 在页面上改脚本保存即生效, 运维自己就能搞定, 还能用 methods.isProduct 让不同产品走不同过滤策略。

能解决哪些问题

问题解法
稳定工况下大量重复数据入库值变才入库, 重复值拦在库外
数据库膨胀、不断扩容花钱入库量骤降, 数据库稳定
历史数据查询卡顿数据量减 90%+, 秒级返回
改过滤规则要找开发发版页面改脚本即生效