工厂数据仓库建模
工厂数据仓库是工厂数据平台总体架构中的核心存储与分析引擎,承上启下——汇聚来自数据采集层架构的原始数据,向下支撑数据服务与API层的指标查询与报表输出。不同于传统互联网数仓,工厂数仓需要深度理解制造业务语义,才能设计出真正有用的模型。
主题域划分
工厂数仓按照业务领域划分为五大主题域,每个主题域对应一组紧密关联的业务实体和分析场景:
- 设备域:设备档案、设备状态、设备报警、维保记录。核心指标为OEE-设备综合效率、MTBF-平均故障间隔时间、MTTR-平均修复时间。
- 生产域:工单、工序报工、产量统计、工时记录。核心指标为产能利用率-Capacity Utilization、节拍时间-Takt Time。
- 质量域:来料检验、过程检验、成品检验、不合格品处理。核心指标为良率-Yield、FPY-直通率、CPK-过程能力指数。
- 物料域:物料出入库、库存快照、BOM消耗、物料追溯。与物料管理与拉动流程紧密关联。
- 能耗域:电力、蒸汽、压缩空气、水等能源消耗数据。支撑能耗分析和碳排放计算。
分层架构
工厂数仓采用经典的四层架构,与实时与离线统一架构结合,兼顾批处理与实时分析需求:
ODS层(原始数据层)
直接映射源系统数据结构,保留原始数据不做任何加工。主要来源包括:
- SCADA-数据采集与监视系统的实时采集数据(经Kafka接入)
- MES-制造执行系统的报工、工单数据
- ERP-企业资源计划的主数据和业务单据
- QMS-质量管理系统的检验记录
DWD层(明细数据层)
对ODS数据进行清洗、标准化和维度关联,形成一致的明细数据:
- 统一时间格式和时区(工厂通常以北京时间为准)
- 关联设备编码、物料编码等工厂主数据管理中的标准编码
- 处理数据质量问题(空值填充、异常值标记)
DWS层(汇总数据层)
按分析主题进行轻度汇总,预计算常用指标:
- 设备OEE日汇总表:按设备×日期粒度汇总可用率、性能率、质量率
- 生产产量日汇总表:按产线×产品×日期粒度汇总产量
- 质量检验日汇总表:按产品×工序×日期粒度汇总合格率
- 能耗日汇总表:按车间×能源类型×日期粒度汇总消耗量
ADS层(应用数据层)
面向具体业务场景的高度汇总表,直接服务于数据服务与API层:
- 管理驾驶舱数据:全厂OEE趋势、产量完成率、质量趋势
- 车间看板数据:实时产线状态、班组排名
- 报表数据:日报/周报/月报所需的各维度汇总
核心维度
工厂数仓有六大核心维度,贯穿所有主题域:
| 维度 | 说明 | 典型属性 |
|---|---|---|
| 时间维度 | 支持年/季/月/周/日/班/小时多粒度 | 日期、班次、是否节假日 |
| 设备维度 | 工厂最重要的分析主体 | 设备编码、类型、型号、所属产线 |
| 产线维度 | 生产组织的基本单元 | 产线编码、车间、工厂 |
| 工序维度 | 工艺流程的节点 | 工序编码、工序名称、工艺路线 |
| 产品维度 | 产出的成品/半成品 | 产品编码、型号、系列、BOM版本 |
| 班组维度 | 人力资源组织 | 班组编码、班次(早/中/夜)、人员 |
核心事实表
生产报工事实表
记录每一条工序报工的明细数据,是生产域最核心的事实表:
- 维度键:时间键、设备键、产线键、工序键、产品键、班组键
- 度量:投入数量、产出数量、合格数量、报废数量、工时
- 关联:通过工单号关联生产执行与报工数据
设备状态事实表
记录设备每个状态区间的起止时间,是设备域分析的基础:
- 维度键:时间键、设备键、产线键
- 度量:状态持续时间、状态类型(运行/待机/故障/调试)
- 关联:支撑OEE-设备综合效率和设备综合效率损失分析的计算
质检事实表
记录每一条质量检验结果:
- 维度键:时间键、产品键、工序键、检验类型键
- 度量:检验数量、合格数量、缺陷数量、各测量值
- 关联:支撑SPC-统计过程控制分析
能耗事实表
记录各计量点的能源消耗数据:
- 维度键:时间键、设备键/车间键、能源类型键
- 度量:消耗量、费用、单位产品能耗
- 关联:支撑生产成本指标体系中的能源成本分析
工厂特有的建模挑战
时序数据的聚合粒度
工厂数据具有典型的高频时序特征——PLC每秒甚至每毫秒产生一条数据。建模时需要合理设计聚合粒度:
- 秒级数据保留在时序数据库中(如时序数据库选型中选定的引擎)
- 分钟级数据作为DWD层设备状态明细的基础粒度
- 小时/班次/日级数据进入DWS层汇总
- 聚合时需注意:计数用SUM、状态用持续时间占比、异常用MAX/COUNT
批次追溯的路径建模
制造业的批次追溯需要记录”哪个批次的物料经过哪台设备哪个工序产出了哪个批次的产品”。建模方法:
- 设计批次 lineage 事实表,记录每个工序的投入批→产出批映射
- 结合物料管理与拉动流程,实现正向追溯(物料→成品)和反向追溯(成品→物料)
- 使用图模型或闭包表存储多级BOM和批次关系
设备状态的区间建模
设备状态不是离散事件,而是持续时间区间(如”运行了45分钟后停机10分钟”)。建模方法:
- 采用区间事实表:记录(设备ID, 状态, 开始时间, 结束时间, 持续时长)
- 时间重叠处理:当多个状态信号冲突时,需定义优先级规则
- 与MTBF-平均故障间隔时间等指标计算直接关联
建模最佳实践
- 先做业务调研:深入车间理解ISA-95参考架构中定义的制造业务流程
- 统一编码体系:所有维度使用工厂主数据管理中定义的标准编码
- 保留历史版本:维度表使用SCD Type 2,记录设备参数、BOM等变更历史
- 灵活的粒度设计:事实表尽量采用最细粒度,汇总在上层完成
- 数据质量前置:在DWD层完成数据清洗,不让脏数据进入上层
通过系统化的数仓建模,工厂可以建立统一的数据语义层,让不同部门的数据分析建立在同一口径之上,真正实现数据驱动的智能制造。