offdataai
Manufacturing & Industrial · data model template

Quality Management Analytics data model

Kimball warehouse for quality management: an inspection fact feeding first-pass-yield and PPM, an accumulating nonconformance snapshot tracking open->capa->closed milestones, and a defect-level fact over conformed product/supplier/defect-type/plant/inspector dimensions.

Quality management analytics covering inspections, the nonconformance/CAPA lifecycle, and individual defects — a Kimball star schema with conformed product (SCD2), supplier, defect-type, plant, and inspector dimensions for first-pass-yield, PPM, CAPA cycle-time, and defect-Pareto 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-9001IATF-16949FDA-21-CFR-820
13
tables
142
columns
26
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

inspectionnonconformancedefectscorrective_actionconformed_dimensions

Design decisions

  • Accumulating snapshot for nonconformance/CAPA

    A nonconformance report moves through open, CAPA, and closed milestones with measurable lags; an accumulating snapshot supports cycle-time and cost-of-quality analysis on one progressively updated row.

  • Inspection and defect as separate facts

    Inspection is at lot grain (yield, PPM) while defects are at the individual-defect grain needed for Pareto; separating them keeps counts additive and avoids a fan-trap when many defects map to one inspection.

  • Supplier modeled as SCD2

    Supplier certification status and quality rating change over time and must reflect the version in effect when a defect or NCR occurred for accurate supplier-quality scorecards.

  • Defect type as a conformed dimension with severity

    Defect category, severity, and safety flags are shared across inspection, nonconformance, and defect facts, so they are conformed to enable consistent severity-weighted reporting.

Tables in the Quality Management 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_inspection

Grain: one row per inspection lot

Transaction-grain inspection fact feeding first-pass-yield and PPM.

ColumnTypeKeys
inspection_keybigintPK
date_keybigint
product_keybigint
supplier_keybigint
plant_keybigint
inspector_keybigint
inspection_type_keybigint
disposition_keybigint
inspection_idvarchar
lot_numbervarchar
lot_sizeinteger
sample_sizeinteger
inspected_quantityinteger
accepted_quantityinteger
rejected_quantityinteger
defect_countinteger
first_pass_yield_pctdecimal
ppm_defectivedecimal
dispositionvarchar
is_lot_acceptedboolean

fct_nonconformance

Grain: one row per nonconformance report (accumulating snapshot open->capa->closed)

Accumulating snapshot of the nonconformance/CAPA lifecycle.

ColumnTypeKeys
nonconformance_keybigintPK
opened_date_keybigint
product_keybigint
supplier_keybigint
plant_keybigint
defect_type_keybigint
inspector_keybigint
root_cause_keybigint
capa_date_keybigint
closed_date_keybigint
ncr_numbervarchar
affected_quantityinteger
open_to_capa_daysdecimal
capa_to_close_daysdecimal
total_cycle_daysdecimal
cost_of_qualitydecimal
scrap_costdecimal
rework_costdecimal
dispositionvarchar
is_capa_requiredboolean
is_closedboolean

fct_defect

Grain: one row per defect observed

Transaction-grain defect fact for Pareto and root-cause analysis.

ColumnTypeKeys
defect_keybigintPK
date_keybigint
product_keybigint
supplier_keybigint
plant_keybigint
defect_type_keybigint
inspector_keybigint
defect_idvarchar
inspection_idvarchar
defect_quantityinteger
location_on_partvarchar
detection_stagevarchar
defect_costdecimal
is_repairableboolean
is_escapedboolean

fct_capa

Grain: one row per corrective/preventive action (accumulating snapshot)

Accumulating snapshot of the CAPA lifecycle (initiate->verify->close).

ColumnTypeKeys
capa_keybigintPK
initiated_date_keybigint
product_keybigint
supplier_keybigint
plant_keybigint
root_cause_keybigint
inspector_keybigint
verified_date_keybigint
closed_date_keybigint
capa_numbervarchar
ncr_numbervarchar
action_countinteger
init_to_verify_daysdecimal
verify_to_close_daysdecimal
total_cycle_daysdecimal
implementation_costdecimal
estimated_savingsdecimal
effectiveness_scoredecimal
is_effectiveboolean
is_recurringboolean
is_closedboolean

Dimension tables (5)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
day_of_weeksmallint
month_numbersmallint
quartersmallint
yearsmallint
fiscal_periodvarchar
is_business_dayboolean

dim_product

Grain: one row per product per SCD2 version

SCD type 2

ColumnTypeKeys
product_keybigintPK
product_idvarcharBK
part_numbervarchar
product_namevarchar
product_familyvarchar
product_linevarchar
spec_revisionvarchar
aql_levelvarchar
is_regulatedboolean
is_activeboolean

dim_supplier

Grain: one row per supplier per SCD2 version

SCD type 2

ColumnTypeKeys
supplier_keybigintPK
supplier_idvarcharBK
supplier_namevarchar
supplier_tiervarchar
countryvarchar
quality_ratingdecimal
is_certifiedboolean
certification_bodyvarchar
is_approvedboolean

dim_plant

Grain: one row per manufacturing plant

ColumnTypeKeys
plant_keybigintPK
plant_idvarcharBK
plant_namevarchar
plant_codevarchar
cityvarchar
statevarchar
countryvarchar
regionvarchar
quality_certificationvarchar

dim_inspector

Grain: one row per inspector per SCD2 version

SCD type 2

ColumnTypeKeys
inspector_keybigintPK
inspector_idvarcharBK
inspector_namevarcharPII
employee_numbervarcharPII
qualification_levelvarchar
certificationvarchar
home_plantvarchar
is_activeboolean

Lookup tables (4)

dim_defect_type

Grain: one row per defect type

ColumnTypeKeys
defect_type_keybigintPK
defect_codevarcharBK
defect_namevarchar
defect_categoryvarchar
severityvarchar
is_safety_relatedboolean

dim_inspection_type

Grain: one row per inspection type

ColumnTypeKeys
inspection_type_keybigintPK
inspection_type_codevarcharBK
inspection_type_namevarchar
sampling_planvarchar
is_destructiveboolean

dim_disposition

Grain: one row per disposition code

ColumnTypeKeys
disposition_keybigintPK
disposition_codevarcharBK
disposition_namevarchar
affects_yieldboolean
requires_approvalboolean

dim_root_cause

Grain: one row per root-cause category

ColumnTypeKeys
root_cause_keybigintPK
root_cause_codevarcharBK
root_cause_namevarchar
cause_categoryvarchar
is_systemicboolean

Relationships

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

  • fct_inspection.date_key → dim_date (many-to-one)
  • fct_inspection.product_key → dim_product (many-to-one)
  • fct_inspection.supplier_key → dim_supplier (many-to-one)
  • fct_inspection.plant_key → dim_plant (many-to-one)
  • fct_inspection.inspector_key → dim_inspector (many-to-one)
  • fct_inspection.inspection_type_key → dim_inspection_type (many-to-one)
  • fct_inspection.disposition_key → dim_disposition (many-to-one)
  • fct_nonconformance.opened_date_key → dim_date (many-to-one)
  • fct_nonconformance.product_key → dim_product (many-to-one)
  • fct_nonconformance.supplier_key → dim_supplier (many-to-one)
  • fct_nonconformance.plant_key → dim_plant (many-to-one)
  • fct_nonconformance.defect_type_key → dim_defect_type (many-to-one)
  • fct_nonconformance.inspector_key → dim_inspector (many-to-one)
  • fct_nonconformance.root_cause_key → dim_root_cause (many-to-one)
  • fct_defect.date_key → dim_date (many-to-one)
  • fct_defect.product_key → dim_product (many-to-one)
  • fct_defect.supplier_key → dim_supplier (many-to-one)
  • fct_defect.plant_key → dim_plant (many-to-one)
  • fct_defect.defect_type_key → dim_defect_type (many-to-one)
  • fct_defect.inspector_key → dim_inspector (many-to-one)
  • fct_capa.initiated_date_key → dim_date (many-to-one)
  • fct_capa.product_key → dim_product (many-to-one)
  • fct_capa.supplier_key → dim_supplier (many-to-one)
  • fct_capa.plant_key → dim_plant (many-to-one)
  • fct_capa.root_cause_key → dim_root_cause (many-to-one)
  • fct_capa.inspector_key → dim_inspector (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