首页/数据/数仓建模速查/案例:制造工单与质检建模
建模基础69 条

案例:制造工单与质检建模

制造域:工单事实(计划/实际产出)+ 工序事件 + 质检事实;设备、物料、产线为维度;良率 = 合格数 / 检验数,稼动率按设备时间计算。

数仓建模速查数据更新于 2026-10-13

制造域三块数据

制造域的模型由工单事实、工序事件与质检事实三部分组成,设备、物料、产线作为维度。工单事实存计划与实际产出、开工与完工时间;工序事件记录每道工序的报工与流转;质检事实按检验批次记录检验数、合格数与不良原因。良率的分母是检验数而不是产出数,两者混用会让良率虚高;稼动率则按设备可用时间与运行时间计算,需要设备状态数据支撑。

基本信息

事实工单产出、工序事件、质检记录
维度设备、物料、产线、班组
指标良率、直通率、稼动率、达成率
口径要点良率分母为检验数
对账实际产出与报工事件核对

典型使用场景

  • 良率与直通率分析:按产线、设备、班次对比质量水平
  • 稼动率与产能利用率分析,定位设备停机与等待时间
  • 工单达成率考核:计划产出与实际产出对比
  • 不良原因帕累托分析,确定质量改进的优先级
  • 返工与让步接收单独统计,避免混入正常良率

质检事实与良率

质检事实与良率
-- 质检事实:检验批次粒度,检验数作为良率分母
CREATE TABLE fact_qc (
  qc_id        string,
  workorder_id string,
  equip_sk     bigint,
  inspect_cnt  int    COMMENT '检验数,良率分母',
  pass_cnt     int    COMMENT '合格数',
  fail_reason  string COMMENT '不良原因',
  qc_ts        timestamp
) PARTITIONED BY (dt string) STORED AS ORC;

-- 良率:分母是检验数,不是产出数
SELECT workorder_id, sum(pass_cnt) / nullif(sum(inspect_cnt), 0) AS yield_rate
FROM fact_qc GROUP BY workorder_id;

建模对象对照

建模对象粒度要点
工单事实一工单一行的汇总存计划与实际产出时间
工序事件一次报工一行支撑工序级在制与流转分析
质检事实一检验批次一行良率分母为检验数
设备维设备编码状态与归属产线需做新旧对照
抽查与全检不能混着算良率:抽检样本不代表全量,混算会让不同工序的良率失去可比性,检验方式必须作为字段保留下来。
返工品的二次检验要单独标记:重复计入检验数会稀释不良率,也会让质量改进的实际效果被低估。

易错点

  • 良率分母用产出数而非检验数,口径错误且良率虚高
  • 返修复检未留痕,良率无法复查
  • 工单实际产出与报工事件不对账,产量与生产系统长期不一致
  • 抽查与全检数据混算,跨产线的良率比较失去意义

数据来源与参考

  • 制造数仓实践:工单与质检模型
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌