offdataai
Manufacturing & Industrial · data model template

Manufacturing OEE Analytics data model

Kimball warehouse for manufacturing OEE: a production-run fact carrying the three OEE components, a downtime-event fact tied to six-big-losses reason codes, and a quality-inspection fact over conformed machine/product/work-order/shift/operator dimensions.

Manufacturing analytics centered on Overall Equipment Effectiveness (availability x performance x quality) covering production runs, downtime events, and quality inspections — a Kimball star schema with conformed machine (SCD2), product, work-order, shift, operator, and downtime-reason dimensions for plant-floor loss and yield reporting. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.

KimballManufacturing & IndustrialISO-9001OSHA
13
tables
125
columns
21
relationships
2
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Databricks). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

productiondowntimequalitymaintenanceconformed_dimensions

Design decisions

  • Production run as the OEE transaction grain

    Availability, performance, and quality are computed per machine, work order, and shift, so the production run is the natural grain that lets OEE roll up cleanly by line, plant, and time.

  • Separate downtime-event fact tied to reason codes

    Loss analysis requires every stoppage at its own grain mapped to the six big losses; a dedicated downtime fact avoids diluting the production-run grain and supports Pareto root-cause reporting.

  • Machine modeled as SCD2

    Machine attributes (rated speed, line assignment, asset class) change after retooling or relocation and must reflect the version in effect for each run to keep historical OEE accurate.

  • Quality inspection separate from production run

    Inspections occur at a different cadence and sampling grain than runs; keeping them apart preserves additivity of defect counts while still feeding the OEE quality rate.

Tables in the Manufacturing OEE Analytics model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Fact tables (4)

fct_production_run

Grain: one row per machine per work order per shift

Transaction-grain production run fact carrying OEE components.

ColumnTypeKeys
production_run_keybigintPK
date_keybigint
machine_keybigint
product_keybigint
work_order_keybigint
shift_keybigint
operator_keybigint
run_idvarchar
planned_run_minutesdecimal
actual_run_minutesdecimal
downtime_minutesdecimal
units_producedinteger
good_unitsinteger
reject_unitsinteger
rework_unitsinteger
ideal_cycle_time_secdecimal
availability_pctdecimal
performance_pctdecimal
quality_pctdecimal
oee_pctdecimal

fct_downtime_event

Grain: one row per downtime event

Transaction-grain downtime event fact for loss analysis.

ColumnTypeKeys
downtime_event_keybigintPK
date_keybigint
machine_keybigint
shift_keybigint
downtime_reason_keybigint
operator_keybigint
event_idvarchar
duration_minutesdecimal
is_unplannedboolean
requires_maintenanceboolean
estimated_loss_costdecimal

fct_quality_inspection

Grain: one row per quality inspection sample

Transaction-grain quality inspection fact feeding the OEE quality rate.

ColumnTypeKeys
quality_inspection_keybigintPK
date_keybigint
machine_keybigint
product_keybigint
work_order_keybigint
operator_keybigint
defect_code_keybigint
inspection_idvarchar
sample_sizeinteger
passed_unitsinteger
failed_unitsinteger
defect_countinteger
measured_valuedecimal
spec_lower_limitdecimal
spec_upper_limitdecimal
is_within_specboolean
dispositionvarchar

fct_maintenance

Grain: one row per maintenance work event

Transaction-grain maintenance fact for reliability (MTBF/MTTR).

ColumnTypeKeys
maintenance_keybigintPK
date_keybigint
machine_keybigint
operator_keybigint
maintenance_type_keybigint
maintenance_idvarchar
labor_hoursdecimal
machine_downtime_minutesdecimal
labor_costdecimal
parts_costdecimal
mtbf_hoursdecimal
mttr_hoursdecimal
is_unplannedboolean

Dimension tables (5)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
day_of_weeksmallint
month_numbersmallint
quartersmallint
yearsmallint
is_working_dayboolean
is_planned_maintenance_dayboolean

dim_machine

Grain: one row per machine per SCD2 version

SCD type 2

ColumnTypeKeys
machine_keybigintPK
machine_idvarcharBK
machine_namevarchar
machine_typevarchar
manufacturervarchar
model_numbervarchar
production_linevarchar
plant_codevarchar
rated_speed_uphdecimal
install_datedate
asset_classvarchar
is_activeboolean

dim_product

Grain: one row per manufactured product

ColumnTypeKeys
product_keybigintPK
product_idvarcharBK
part_numbervarchar
product_namevarchar
product_familyvarchar
unit_of_measurevarchar
standard_cycle_time_secdecimal
target_yield_pctdecimal

dim_work_order

Grain: one row per production work order

ColumnTypeKeys
work_order_keybigintPK
work_order_idvarcharBK
work_order_typevarchar
priorityvarchar
planned_quantityinteger
bom_revisionvarchar
routing_codevarchar

dim_operator

Grain: one row per operator per SCD2 version

SCD type 2

ColumnTypeKeys
operator_keybigintPK
operator_idvarcharBK
operator_namevarcharPII
badge_numbervarcharPII
crewvarchar
skill_levelvarchar
certificationvarchar
is_activeboolean

Lookup tables (4)

dim_shift

Grain: one row per shift definition

ColumnTypeKeys
shift_keybigintPK
shift_codevarcharBK
shift_namevarchar
start_timevarchar
end_timevarchar
planned_minutesinteger

dim_downtime_reason

Grain: one row per downtime reason code

ColumnTypeKeys
downtime_reason_keybigintPK
reason_codevarcharBK
reason_namevarchar
loss_categoryvarchar
is_plannedboolean
six_big_lossesvarchar

dim_defect_code

Grain: one row per quality defect code

ColumnTypeKeys
defect_code_keybigintPK
defect_codevarcharBK
defect_namevarchar
defect_categoryvarchar
severityvarchar

dim_maintenance_type

Grain: one row per maintenance type

ColumnTypeKeys
maintenance_type_keybigintPK
maintenance_type_codevarcharBK
maintenance_type_namevarchar
is_plannedboolean

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • fct_production_run.date_key → dim_date (many-to-one)
  • fct_production_run.machine_key → dim_machine (many-to-one)
  • fct_production_run.product_key → dim_product (many-to-one)
  • fct_production_run.work_order_key → dim_work_order (many-to-one)
  • fct_production_run.shift_key → dim_shift (many-to-one)
  • fct_production_run.operator_key → dim_operator (many-to-one)
  • fct_downtime_event.date_key → dim_date (many-to-one)
  • fct_downtime_event.machine_key → dim_machine (many-to-one)
  • fct_downtime_event.shift_key → dim_shift (many-to-one)
  • fct_downtime_event.downtime_reason_key → dim_downtime_reason (many-to-one)
  • fct_downtime_event.operator_key → dim_operator (many-to-one)
  • fct_quality_inspection.date_key → dim_date (many-to-one)
  • fct_quality_inspection.machine_key → dim_machine (many-to-one)
  • fct_quality_inspection.product_key → dim_product (many-to-one)
  • fct_quality_inspection.work_order_key → dim_work_order (many-to-one)
  • fct_quality_inspection.operator_key → dim_operator (many-to-one)
  • fct_quality_inspection.defect_code_key → dim_defect_code (many-to-one)
  • fct_maintenance.date_key → dim_date (many-to-one)
  • fct_maintenance.machine_key → dim_machine (many-to-one)
  • fct_maintenance.operator_key → dim_operator (many-to-one)
  • fct_maintenance.maintenance_type_key → dim_maintenance_type (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time