第4章 边缘数据预处理流程:数据清洗规则、异常值过滤策略、本地缓存机制、上传触发条件
适用场景
本章适用于部署在工业边缘网关、智能传感器节点或现场工控机上的数据预处理模块。当设备端原始数据存在噪声、缺失、格式不一致或网络不稳定时,需要在本地上完成清洗、过滤、缓存与上传决策,避免脏数据占用云端带宽或影响分析模型。
前置条件
- 边缘节点已安装数据采集Agent(版本≥2.1)并正常连接传感器/PLC。
- 本地存储路径
/data/edge/cache已挂载且可用空间≥500MB。 - 云端MQTT Broker或HTTP API端点地址已配置在
edge_config.yaml中。 - 时间同步服务(NTP)已启用,设备时钟偏差≤1秒。
操作步骤
- 数据采集与初步解析:Agent从物理端口读取二进制流或结构化报文,按协议模板解析为统一格式。
- 数据清洗:对字段级缺失值、越界值、重复时间戳执行补全、剔除或去重。
- 异常值过滤:基于统计学方法(3σ、IQR)或规则引擎标记并隔离异常点。
- 本地缓存写入:将清洗过滤后的有效数据逐条插入SQLite数据库或追加到环形文件。
- 触发条件判断:依次检查缓存记录数、间隔时间、紧急标记,决定是否触发上传。
- 数据上传与确认:将待上传批次打包(JSON/Protobuf),调用上传接口,收到ACK后清除已发送缓存。
输入输出物
| 类型 | 名称 | 格式/位置 | 说明 |
|---|---|---|---|
| 输入 | 原始设备数据流 | 串口/Modbus TCP/OPC UA | 未处理的传感器读数、状态位、时间戳 |
| 输入 | 清洗规则集 | /config/cleaning_rules.json | 字段上下界、缺失值填充策略、正则校验 |
| 输入 | 过滤策略配置 | /config/filter_policy.yaml | 算法类型、阈值、滑动窗口大小 |
| 输出 | 干净数据缓存 | 本地SQLite: /data/edge/cache/clean.db | 含清洗标记、过滤状态字段 |
| 输出 | 上传批次文件 | 内存缓冲区 + 临时文件 | 上传成功后自动删除 |
| 输出 | 异常日志 | /var/log/edge_preproc.log | 记录被丢弃或标记的异常记录详情 |
责任边界
- 边缘计算模块:负责解析、清洗、过滤、缓存与触发判断全流程,保证不丢失关键数据。
- 云端数据平台:接收已上传的干净数据,不再重复校验格式;负责处理边缘标记的“疑似异常”数据。
- 运维人员:定期审查清洗规则和过滤阈值;每月清理缓存目录中的过期备份。
- 数据质量审计:核对边缘日志与云端入库记录,确保上传触发条件未被绕过。
记录材料
- 边缘节点每日数据质量报告(包含清洗率、过滤率、缓存积压量)。
- 异常日志文件:滚动保留最近7天。
- 上传触发事件记录(时间戳、触发条件类型、数据批次ID)。
- 配置变更记录:每次修改清洗规则或过滤策略须生成审计条目。
异常处理
常见异常与处理措施
- 缓存空间不足:触发紧急清理策略,删除最早5%缓存(保留高危标记数据),同时发送磁盘告警。
- 上传连续失败(≥3次):进入降级模式,暂停触发,改为每5分钟重试一次;若持续30分钟失败,本地存满后循环覆盖旧数据。
- 时间戳严重偏移(>10秒):该数据标记为“时间不可信”,不参与过滤计算,但保留原始值等待人工核实。
- 规则引擎抛出异常:回退至白名单模式,仅丢弃明确格式错误的数据,其他数据放行并记入异常日志。
验收标准
| 验收项 | 标准 | 测试方法 |
|---|---|---|
| 数据清洗正确率 | ≥99.5% | 输入1000条已知脏数据,统计清洗后正确率 |
| 异常值过滤召回率 | ≥98% | 注入50个模拟异常点,检查过滤记录 |
| 本地缓存不丢失 | 重启后数据完整 | 模拟断电重启,对比缓存记录数与上传前快照 |
| 上传触发延迟 | 从满足条件到发起上传≤200ms | 带打点工具的压测脚本 |
| 异常日志完整 | 每次丢弃或过滤均有记录 | 遍历日志行数与实际丢弃数一致 |
实施建议:首次部署时先将清洗规则库设为宽松模式(仅过滤格式错误),运行48小时后根据日志统计调整阈值,避免过度过滤导致有效数据丢失。缓存文件建议启用WAL模式以提升写入性能。