offdataai
Manufacturing & Industrial · data model template

Manufacturing EDW data model

Data Vault 2.0 raw vault for manufacturing: hubs (product/work_order/machine/plant/material), links (wo-product, wo-machine, machine-plant, material consumption), and satellites (product, work-order status, machine, plant, material details + production output). Hash keys and load metadata are generated by the DDL layer.

Discrete-manufacturing enterprise data warehouse modeled as a Data Vault 2.0 raw vault: product, work-order, machine, plant, and material hubs; work-order-to-product / machine and machine-to-plant links; a non-historized material-consumption link carrying quantity and cost; and descriptive plus effectivity satellites — built to integrate MES, ERP, and SCADA with full historization for genealogy, recall, and quality traceability. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.

Data Vault 2.0Manufacturing & IndustrialISO-9001IATF-16949SOX
16
tables
103
columns
14
relationships
1
PII columns

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

Subject areas

hubslinkssatellitesreference

Design decisions

  • Hubs isolate manufacturing business keys

    Product codes, work-order numbers, and machine ids arrive from different systems (PLM, MES, SCADA) at different times; isolating them in hubs lets each source attach independently without reshaping the model — the core agility Data Vault gives a manufacturing EDW.

  • Non-historized material-consumption link

    Material issues against a work order are immutable shop-floor events, so the consumption link is insert-only and carries quantity, scrap, and cost directly with no satellite.

  • Production output split into its own satellite

    OEE and yield readings change far faster than machine master data; a separate high-rate-of-change satellite on the wo-machine link keeps history compact and loads efficient.

  • Effectivity satellite on work-order status

    Work orders move through release/in-progress/complete states; an effectivity satellite records the valid period of each status for as-of WIP and throughput reporting.

  • Traceability drives Data Vault in manufacturing

    Load_date + record_source on every row give a queryable genealogy and audit trail for recalls and IATF-16949 / ISO-9001 quality lineage without scraping MES logs.

Tables in the Manufacturing EDW 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.

Hubs (5)

hub_product

Grain: one row per unique hub_product business key

ColumnTypeKeys
product_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_work_order

Grain: one row per unique hub_work_order business key

ColumnTypeKeys
work_order_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_machine

Grain: one row per unique hub_machine business key

ColumnTypeKeys
machine_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_plant

Grain: one row per unique hub_plant business key

ColumnTypeKeys
plant_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_material

Grain: one row per unique hub_material business key

ColumnTypeKeys
material_numbervarcharBK
load_datetimestamp
record_sourcevarchar

Links (4)

lnk_wo_product

Grain: one row per lnk_wo_product relationship

Which product a work order produces.

ColumnTypeKeys
work_order_hkbinary
product_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_wo_machine

Grain: one row per lnk_wo_machine relationship

Which machine a work order is executed on.

ColumnTypeKeys
work_order_hkbinary
machine_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_machine_plant

Grain: one row per lnk_machine_plant relationship

Which plant a machine is installed in.

ColumnTypeKeys
machine_hkbinary
plant_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_wo_material_consumption

Grain: one row per material issue against a work order (non-historized link)

Transactional (non-historized) link — insert-only material consumption events.

ColumnTypeKeys
work_order_hkbinary
material_hkbinary
consumption_idvarcharBK
consumption_tstimestamp
uom_codevarchar
quantity_consumeddecimal
scrap_quantitydecimal
material_costdecimal
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_product_details

Grain: one row per product_hk per change

Product descriptive history.

ColumnTypeKeys
product_hkbinaryPK
load_datetimestampPK
product_namevarchar
product_familyvarchar
product_categoryvarchar
revisionvarchar
base_uomvarchar
standard_costdecimal
lifecycle_statusvarchar
load_end_datetimestamp
record_sourcevarchar

sat_work_order_status

Grain: one row per work order per status effectivity change

Effectivity satellite tracking the valid period of each work-order status.

ColumnTypeKeys
work_order_hkbinaryPK
load_datetimestampPK
order_statusvarchar
priorityvarchar
planned_quantitydecimal
completed_quantitydecimal
effective_fromtimestamp
effective_totimestamp
is_activeboolean
load_end_datetimestamp
record_sourcevarchar

sat_machine_details

Grain: one row per machine_hk per change

Machine descriptive history.

ColumnTypeKeys
machine_hkbinaryPK
load_datetimestampPK
machine_namevarchar
machine_typevarchar
manufacturervarchar
model_numbervarchar
serial_numbervarchar
install_datedate
rated_capacitydecimal
load_end_datetimestamp
record_sourcevarchar

sat_plant_details

Grain: one row per plant_hk per change

Plant descriptive history.

ColumnTypeKeys
plant_hkbinaryPK
load_datetimestampPK
plant_namevarchar
cityvarchar
statevarchar
countryvarchar
plant_managervarcharPII
shift_patternvarchar
load_end_datetimestamp
record_sourcevarchar

sat_material_details

Grain: one row per material_hk per change

Material descriptive history.

ColumnTypeKeys
material_hkbinaryPK
load_datetimestampPK
material_namevarchar
material_groupvarchar
material_typevarchar
base_uomvarchar
standard_pricedecimal
hazardous_flagboolean
load_end_datetimestamp
record_sourcevarchar

sat_production_output

Grain: one row per work-order/machine run per output reading (high-rate-of-change satellite)

Production output satellite on the work-order/machine link.

ColumnTypeKeys
wo_machine_hkbinaryPK
load_datetimestampPK
good_quantitydecimal
reject_quantitydecimal
cycle_time_secondsdecimal
downtime_minutesdecimal
oee_pctdecimal
load_end_datetimestamp
record_sourcevarchar

Lookup tables (1)

ref_uom

Grain: one row per unit of measure

ColumnTypeKeys
uom_codevarcharBK
uom_namevarchar
dimensionvarchar
conversion_factordecimal

Relationships

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

  • lnk_wo_product.work_order_hk → hub_work_order (many-to-one)
  • lnk_wo_product.product_hk → hub_product (many-to-one)
  • lnk_wo_machine.work_order_hk → hub_work_order (many-to-one)
  • lnk_wo_machine.machine_hk → hub_machine (many-to-one)
  • lnk_machine_plant.machine_hk → hub_machine (many-to-one)
  • lnk_machine_plant.plant_hk → hub_plant (many-to-one)
  • lnk_wo_material_consumption.work_order_hk → hub_work_order (many-to-one)
  • lnk_wo_material_consumption.material_hk → hub_material (many-to-one)
  • sat_product_details.product_hk → hub_product (many-to-one)
  • sat_work_order_status.work_order_hk → hub_work_order (many-to-one)
  • sat_machine_details.machine_hk → hub_machine (many-to-one)
  • sat_plant_details.plant_hk → hub_plant (many-to-one)
  • sat_material_details.material_hk → hub_material (many-to-one)
  • sat_production_output.wo_machine_hk → lnk_wo_machine (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