news 2026/6/15 20:49:43

半导体MES系统数据清洗:3个坑我踩了1年

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
半导体MES系统数据清洗:3个坑我踩了1年

去年做MES数据迁移,以为就是简单的ETL,结果数据清洗搞了整整3个月。最坑的一次:时间戳格式不统一,有的精确到秒有的到分钟,导致OEE计算结果差了20%,PM差点找我麻烦。

一、坑1:时间戳格式不统一

这是最大的坑。我们的MES数据来自3个不同系统:设备层用Unix时间戳(毫秒级),中间层用SQLServer的datetime,西门子PLC用YY-MM-DD HH:MM格式。三套数据合在一起,时间戳格式多达12种。第一次做OEE统计算了半天结果跟现场对不上,后来发现是格式混乱导致的时间偏差叠加。

解决方案:统一转为UTC毫秒时间戳,用pandas解析所有格式。关键代码(45行):


def normalize_timestamp(series):
def parse_one(val):
if pd.isna(val): return pd.NaT
if isinstance(val, (int, float)):
val = int(val)
if val > 1e12: val = val // 1000
return pd.Timestamp(val, unit='s', tz='UTC')
val = str(val).strip()
formats = [
'%Y-%m-%d %H:%M:%S', '%Y/%m/%d %H:%M:%S',
'%Y-%m-%d %H:%M', '%Y/%m/%d %H:%M',
'%Y-%m-%d', '%Y/%m/%d',
'%y-%m-%d %H:%M:%S'
]
for fmt in formats:
try: return pd.Timestamp(datetime.strptime(val, fmt), tz='UTC')
except ValueError: continue
return pd.NaT
return series.apply(parse_one)

df['timestamp'] = normalize_timestamp(df['raw_timestamp'])
print('Parse success rate:', df['timestamp'].notna().mean())

二、坑2:停机时数据缺失

FAB设备停机时,操作员往往不记录停机状态,直接留空。导致数据里有一大堆NaN,系统以为是正常生产,OEE算出来虚高。我有一次报给PM的OEE是92%,PM说我看设备停了3小时,你们怎么算的,当场社死。

解决方案:用设备状态字段和实际产量交叉验证,自动补全停机记录。产量为0且时长>5分钟→标记为计划停机;连续3条以上NaN且设备状态=IDLE→标记为故障停机。补全后OEE从92%修正到78%,跟现场实际一致。

三、坑3:单位混乱

设备数据里时间单位不统一:有的是秒,有的是分钟,有的是小时。产能数据里:有的是片/小时,有的是批/天。混合在一起计算,数值能差几十倍。我曾经把气体流量当成标准单位来算,结果算出来ETCH机台的气体流量比大气压还高,设备工程师看了直摇头。解决方案:入库前统一转换为基础单位(秒、ml/min、片)。

四、数据质量可视化

图1 MES数据质量问题分布(近3个月)

时间戳格式不统一是重灾区(342条),缺失值其次(198条)。这3个月累计发现897条脏数据,都是靠自动化脚本检测出来的。

图2 膜厚数据清洗前后对比

原始数据有3个明显离群点(850nm/200nm/900nm,正常范围440-560nm),IQR方法清洗后数据干净可用。异常值往往是传感器漂移或设备故障的信号,清洗时别直接删,要标记出来给设备工程师排查。

五、总结

MES数据清洗的坑远不止这3个,但只要做到:时间戳统一、停机补全、单位转换这三点,基本能覆盖80%的脏数据。我的经验:数据清洗花的时间永远比你预计的多留50%buffer,不然天天被PM找麻烦。

你们MES数据清洗遇到过什么奇葩问题?评论区分享一个

获取MES数据清洗工具包(含时间戳统一+停机补全+单位转换),私信回复【数据清洗】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 20:43:58

B站缓存视频转换完全手册:3分钟学会m4s转MP4永久保存

B站缓存视频转换完全手册:3分钟学会m4s转MP4永久保存 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站视频突然消失而焦…

作者头像 李华
网站建设 2026/6/15 20:42:59

从CCPC河南省赛F题到M题:一个新手队的真实解题心路与踩坑复盘

从F题到M题:一场CCPC竞赛中的新手突围战第一次踏入CCPC省赛现场时,空调的冷风混合着键盘敲击声在体育馆内形成一种特殊的频率。作为一支由大二学生组成的队伍,我们既带着初生牛犊的莽撞,也背负着对未知赛题的忐忑。这场比赛最终定…

作者头像 李华
网站建设 2026/6/15 20:39:01

3步快速备份QQ空间全部历史:GetQzonehistory完整使用指南

3步快速备份QQ空间全部历史:GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间的珍贵回忆会因为账号问题或平台政策变化而永久消…

作者头像 李华