工厂数据仓库建模

工厂数据仓库是工厂数据平台总体架构中的核心存储与分析引擎,承上启下——汇聚来自数据采集层架构的原始数据,向下支撑数据服务与API层的指标查询与报表输出。不同于传统互联网数仓,工厂数仓需要深度理解制造业务语义,才能设计出真正有用的模型。

主题域划分

工厂数仓按照业务领域划分为五大主题域,每个主题域对应一组紧密关联的业务实体和分析场景:

分层架构

工厂数仓采用经典的四层架构,与实时与离线统一架构结合,兼顾批处理与实时分析需求:

ODS层(原始数据层)

直接映射源系统数据结构,保留原始数据不做任何加工。主要来源包括:

DWD层(明细数据层)

对ODS数据进行清洗、标准化和维度关联,形成一致的明细数据:

  • 统一时间格式和时区(工厂通常以北京时间为准)
  • 关联设备编码、物料编码等工厂主数据管理中的标准编码
  • 处理数据质量问题(空值填充、异常值标记)

DWS层(汇总数据层)

按分析主题进行轻度汇总,预计算常用指标:

  • 设备OEE日汇总表:按设备×日期粒度汇总可用率、性能率、质量率
  • 生产产量日汇总表:按产线×产品×日期粒度汇总产量
  • 质量检验日汇总表:按产品×工序×日期粒度汇总合格率
  • 能耗日汇总表:按车间×能源类型×日期粒度汇总消耗量

ADS层(应用数据层)

面向具体业务场景的高度汇总表,直接服务于数据服务与API层

  • 管理驾驶舱数据:全厂OEE趋势、产量完成率、质量趋势
  • 车间看板数据:实时产线状态、班组排名
  • 报表数据:日报/周报/月报所需的各维度汇总

核心维度

工厂数仓有六大核心维度,贯穿所有主题域:

维度说明典型属性
时间维度支持年/季/月/周/日/班/小时多粒度日期、班次、是否节假日
设备维度工厂最重要的分析主体设备编码、类型、型号、所属产线
产线维度生产组织的基本单元产线编码、车间、工厂
工序维度工艺流程的节点工序编码、工序名称、工艺路线
产品维度产出的成品/半成品产品编码、型号、系列、BOM版本
班组维度人力资源组织班组编码、班次(早/中/夜)、人员

核心事实表

生产报工事实表

记录每一条工序报工的明细数据,是生产域最核心的事实表:

  • 维度键:时间键、设备键、产线键、工序键、产品键、班组键
  • 度量:投入数量、产出数量、合格数量、报废数量、工时
  • 关联:通过工单号关联生产执行与报工数据

设备状态事实表

记录设备每个状态区间的起止时间,是设备域分析的基础:

质检事实表

记录每一条质量检验结果:

  • 维度键:时间键、产品键、工序键、检验类型键
  • 度量:检验数量、合格数量、缺陷数量、各测量值
  • 关联:支撑SPC-统计过程控制分析

能耗事实表

记录各计量点的能源消耗数据:

  • 维度键:时间键、设备键/车间键、能源类型键
  • 度量:消耗量、费用、单位产品能耗
  • 关联:支撑生产成本指标体系中的能源成本分析

工厂特有的建模挑战

时序数据的聚合粒度

工厂数据具有典型的高频时序特征——PLC每秒甚至每毫秒产生一条数据。建模时需要合理设计聚合粒度:

  • 秒级数据保留在时序数据库中(如时序数据库选型中选定的引擎)
  • 分钟级数据作为DWD层设备状态明细的基础粒度
  • 小时/班次/日级数据进入DWS层汇总
  • 聚合时需注意:计数用SUM、状态用持续时间占比、异常用MAX/COUNT

批次追溯的路径建模

制造业的批次追溯需要记录”哪个批次的物料经过哪台设备哪个工序产出了哪个批次的产品”。建模方法:

  • 设计批次 lineage 事实表,记录每个工序的投入批→产出批映射
  • 结合物料管理与拉动流程,实现正向追溯(物料→成品)和反向追溯(成品→物料)
  • 使用图模型或闭包表存储多级BOM和批次关系

设备状态的区间建模

设备状态不是离散事件,而是持续时间区间(如”运行了45分钟后停机10分钟”)。建模方法:

  • 采用区间事实表:记录(设备ID, 状态, 开始时间, 结束时间, 持续时长)
  • 时间重叠处理:当多个状态信号冲突时,需定义优先级规则
  • MTBF-平均故障间隔时间等指标计算直接关联

建模最佳实践

  1. 先做业务调研:深入车间理解ISA-95参考架构中定义的制造业务流程
  2. 统一编码体系:所有维度使用工厂主数据管理中定义的标准编码
  3. 保留历史版本:维度表使用SCD Type 2,记录设备参数、BOM等变更历史
  4. 灵活的粒度设计:事实表尽量采用最细粒度,汇总在上层完成
  5. 数据质量前置:在DWD层完成数据清洗,不让脏数据进入上层

通过系统化的数仓建模,工厂可以建立统一的数据语义层,让不同部门的数据分析建立在同一口径之上,真正实现数据驱动的智能制造。