Quality Control Dataset for Production Analysis

This ready-made synthetic dataset provides 30,041 records across 4 tables, designed for practicing data quality analysis. It includes detailed production and quality check information, suitable for intermediate domain professionals.

  • last updated 3 Oct 2026
  • by GoMask
  • Dataset contains 30,041 rows and 20 columns.
  • Covers production runs, operator details, machine information, and quality checks.
  • Data spans from 2023-01-08 to 2024-12-31.
  • Includes foreign keys for relational analysis.
  • A free sample of 1,000 rows is available.

At a glance

  • 4tables
  • 30,041rows
  • 20columns
  • Jan 2023 – Dec 2024date range

The 4 tables

preview and data dictionary per table

Operators operators · dimension table · 50 rows

Information about the manufacturing operators.

Preview

First 10 of 50 rows of the Operators table
operator_iduuidoperator_namestringhire_datedate
0ea2b9c5-e48f-4bb4-aa41-e2697e265b16Omar Hassan2012-01-10
2b4aafb8-6aea-45ef-88b5-52fae54f57ccPriya Sharma2018-06-08
e7e52058-be73-4f64-8f35-6f293da0efddMateo Garcia2013-11-20
4f531463-a919-42cd-930b-3dd0659f9066Aisha Khan2023-08-21
f813b22d-b1cc-4882-882c-00a397cc294dKenji Tanaka2022-07-19
05a1fcfc-8e44-4dff-a808-d3f880c1b663Fatima Rossi2018-03-12
64e6748b-8eaf-40a5-8347-e646a4ffaa93Diego Silva2018-09-07
3f40ade4-21df-470b-a0c2-28aadfd30b25Javier Rodriguez2011-02-24
a3b9d540-8caf-4514-8d53-58e1ccc8f5c9Ananya Patel2014-07-25
34e25475-4c13-48b0-9bd7-a32a50a61878Carlos Torres2013-07-03
10 of 50 rows · 3 columns

Data dictionary

Data dictionary for the Operators table
columntypedescriptionexamplenull %
operator_iduuidUnique identifier for the manufacturing operator.unique0ea2b9c5-e48f-4bb4-aa41-e2697e265b160%
operator_namestringFull name of the machine operator.Omar Hassan0%
hire_datedateDate the operator was hired by the manufacturing facility.2012-01-100%

Machines machines · dimension table · 20 rows

Details of the manufacturing machines used.

Preview

First 10 of 20 rows of the Machines table
machine_iduuidmachine_modelstringinstallation_datedate
5f3294b9-e42c-4bc3-bbd9-5cc7e879764cCNC-Mill-X2002024-09-16
bb6b2783-8daa-4541-90e3-97b5817ba0ddCNC-Mill-X5002024-05-29
ec4fa098-2e42-4646-807e-b76c683be521CNC-Mill-X5002023-05-21
d13a4dbd-3d0f-4ddd-ab41-f9a12cc79fc5CNC-Mill-X2002023-07-07
baf9b7de-28e5-46e2-96fc-cee448f2b394CNC-Mill-X5002024-06-16
5756b9a1-5f82-4ad7-b4db-b67aaaec00a7CNC-Mill-X2002024-08-09
9529b6b9-7501-4e3b-a58b-e1d36d330f7bCNC-Mill-X2002024-10-11
3f2324bf-ec9e-415b-a8a1-7bf3ddaf5731CNC-Mill-X5002023-03-07
301b038d-61f3-4b6c-8c9e-6a9fa1a59df8InjMolding-Pro-1202024-08-21
b8b85212-1279-4224-b484-a6db72814292InjMolding-Pro-1202023-07-03
10 of 20 rows · 3 columns

Data dictionary

Data dictionary for the Machines table
columntypedescriptionexamplenull %
machine_iduuidUnique identifier for the manufacturing machine.unique5f3294b9-e42c-4bc3-bbd9-5cc7e879764c0%
machine_modelstringModel series designation for the industrial machinery.CNC-Mill-X2000%
installation_datedateDate on which the machinery was installed and commissioned in the facility.unique2024-09-160%

Production data production_data · table · 5,000 rows

Records of individual production runs.

Preview

First 10 of 5,000 rows of the Production data table
run_iduuidproduct_idstringproduction_datedatebatch_quantityintegershift_typestringoperator_iduuidmachine_iduuid
94791e9e-9a74-42c8-8ea2-4fad8f89e42fPRD-0452024-06-18718Morning9538166d-c3e5-4b01-990a-be4e5dfcf20277aa35d0-1cc4-4814-99e0-b6e689ab6a1a
65d59c9a-4304-411d-a2aa-b901d539f1d6PRD-0782024-07-262016Morning883c5d4a-cc07-4e9e-bbba-1c3f46c248c19ff28b91-31d9-485f-a2ab-5e0b43cf9d6e
c5e6e588-cb4d-4ddc-a425-f25c0f40302fPRD-0122024-11-291806Morningeac8dbcd-5e63-4fdf-851f-fa4a14d693e29529b6b9-7501-4e3b-a58b-e1d36d330f7b
d8f78c74-4b37-4058-a43f-ea6e7a54cd9dPRD-0992024-10-241211Morning3f40ade4-21df-470b-a0c2-28aadfd30b259ff28b91-31d9-485f-a2ab-5e0b43cf9d6e
8f54f604-1827-4c6b-acf3-3ee6b97b4976PRD-0332023-01-131341Morning0a778a7a-08ba-41a4-8d3b-c4595f6a35f377aa35d0-1cc4-4814-99e0-b6e689ab6a1a
f4c02f4e-9f2d-4780-81e0-74b4116acc7dPRD-0562024-11-22605Morning3ac5329d-05c1-49a1-945a-ba8aa1aa22acea2b2136-bfea-4b74-9829-f000d2bd4058
ee23d196-86b5-45c7-9ff5-9ca01a29f018PRD-0812023-12-14839Morningf9112302-c684-4c16-8158-2959e7c6dca3da0d304e-2d50-444e-997b-b894b64a8190
18374195-1413-47c4-8ec1-c9a4da02d1c7PRD-0022024-09-281278Morning883c5d4a-cc07-4e9e-bbba-1c3f46c248c198db2c0e-9e58-45ee-ae9f-e83eebc18f88
8f3a1b48-fcab-446e-a948-f7930e0397b4PRD-0672024-07-06876Morning51558957-4d0a-4142-a6fc-bbcd51fbb182ec4fa098-2e42-4646-807e-b76c683be521
7ecb2f21-4326-4add-9499-b0b4cf914e71PRD-0212023-11-22715Morning732670e0-797e-4b23-b474-15057eb1a4b23f2324bf-ec9e-415b-a8a1-7bf3ddaf5731
10 of 5,000 rows · 7 columns

Data dictionary

Data dictionary for the Production data table
columntypedescriptionexamplenull %
run_iduuidUnique identifier for the manufacturing production run.unique94791e9e-9a74-42c8-8ea2-4fad8f89e42f0%
product_idstringIdentifier of the manufactured product model.PRD-0450%
production_datedateDate on which the production batch run took place.2024-06-180%
batch_quantityintegerTotal number of units produced in this specific run.7180%
shift_typestringFactory operational shift during which the run occurred.Morning0%
operator_iduuidForeign key to operators.operator_id.9538166d-c3e5-4b01-990a-be4e5dfcf2020%
machine_iduuidForeign key to machines.machine_id.77aa35d0-1cc4-4814-99e0-b6e689ab6a1a0%

Quality checks quality_checks · fact table · 24,971 rows

Results of quality inspections performed on production runs.

Preview

First 10 of 24,971 rows of the Quality checks table
check_iduuidcheck_typestringresultstringdefect_codestringinspector_idintegercheck_timestampdatetimerun_iduuid
c8b4ca9b-292b-4f9e-aa90-399552dee5e9DimensionalPassblank1422023-11-15 17:27:3116c45238-3657-46f6-99c8-3cc09726fe34
0553bb3c-ee0b-4fd9-83d7-fb733bbc1dd2DimensionalPassblank1172024-12-12 12:39:0114d2d1a7-2361-41bc-b031-9e902447bd0f
eda3e2a2-d2eb-46ea-83d1-a24ce4b459b3DimensionalPassblank562024-08-10 06:35:48c2203d34-0839-498b-9d26-77776bcd807e
6a585acb-f753-4d95-9d0b-29d19250c7a5FunctionalPassblank352024-11-05 21:35:303d0bfa95-b3b8-4b3e-a461-9542ad682426
af7b2aa8-6270-4646-8e7e-d2fb7c484f5eDimensionalPassblank612024-12-27 16:37:23aa8337ac-f4fb-4e6e-906b-648b64d102e8
2943269d-aed7-410c-a603-82e731d858dbDimensionalPassblank1462024-10-07 04:12:1575889ad1-8393-4590-8cd9-3ffcf538f91a
43b9472e-fb57-412f-b2cb-e6a87e22c9e9DimensionalPassblank892023-11-01 04:03:0502a9f166-5178-48f1-8f22-2797fca80779
35d0d674-cd41-4fe4-9586-89a78ac366f4DimensionalPassblank152024-11-26 12:04:06c484c2a3-f65b-4cef-a786-b5108629263a
710191b3-8e10-4ebf-aac4-64936e3358a6FunctionalPassblank162023-10-16 10:28:31c28a6bda-caab-492a-befb-1c03638c6b92
9776beae-b919-406e-99ae-33663872d411FunctionalPassblank562024-01-25 02:35:11b5fc7dd6-4877-4bc4-afb5-426af45d941e
10 of 24,971 rows · 7 columns

Data dictionary

Data dictionary for the Quality checks table
columntypedescriptionexamplenull %
check_iduuidUnique identifier for the quality inspection record.c8b4ca9b-292b-4f9e-aa90-399552dee5e90%
check_typestringCategory of quality inspection performed.Dimensional0%
resultstringFinal assessment result of the quality check.Pass0%
defect_codestringSpecific defect classification code when an issue is detected.WRP90%
inspector_idintegerUnique identifier of the quality control inspector.1420%
check_timestampdatetimeTimestamp at which the inspection was completed.2023-11-15 17:27:310%
run_iduuidForeign key to production_data.run_id.16c45238-3657-46f6-99c8-3cc09726fe340%

How the tables join

  • quality_checks.run_id references production_data.run_idmany to one: each Quality checks row points to one Production data row
  • production_data.operator_id references operators.operator_idmany to one: each Production data row points to one Operators row
  • production_data.machine_id references machines.machine_idmany to one: each Production data row points to one Machines row

Questions to answer with it

  1. What are the most common defect codes observed in quality checks, and which production runs are most affected?

    tables: quality_checks, production_data

  2. Identify operators or machines associated with a higher incidence of defects (Fail result).

    tables: quality_checks, operators, machines

  3. Analyze the trend of defect rates over time for specific product IDs.

    tables: quality_checks, production_data

  4. Calculate the overall pass rate for each check type.

    tables: quality_checks

Starter SQL

run against this data before publishing

Table names match the SQLite file and the SQL script.

Top 4 Defect Codes and Their Counts

sql
SELECT defect_code, COUNT(*) AS defect_count FROM quality_checks WHERE result = 'Fail' AND defect_code IS NOT NULL GROUP BY defect_code ORDER BY defect_count DESC LIMIT 20;

Production Runs with Most Failures

sql
SELECT run_id, COUNT(*) AS failure_count FROM quality_checks WHERE result = 'Fail' GROUP BY run_id ORDER BY failure_count DESC LIMIT 20;

Defect Rate by Machine Model

sql
SELECT m.machine_model, SUM(CASE WHEN qc.result = 'Fail' THEN 1 ELSE 0 END) * 100.0 / COUNT(qc.check_id) AS defect_rate FROM quality_checks qc JOIN production_data pd ON qc.run_id = pd.run_id JOIN machines m ON pd.machine_id = m.machine_id GROUP BY m.machine_model ORDER BY defect_rate DESC LIMIT 20;

Average Batch Quantity by Shift Type

sql
SELECT shift_type, AVG(batch_quantity) AS avg_batch_quantity FROM production_data GROUP BY shift_type LIMIT 20;

Pass Rate per Check Type

sql
SELECT check_type, SUM(CASE WHEN result = 'Pass' THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS pass_rate FROM quality_checks GROUP BY check_type LIMIT 20;

Load it with pandas

python
import pandas as pd

# Unzip the CSV download first: one file per table
operators = pd.read_csv("operators.csv")
machines = pd.read_csv("machines.csv")
production_data = pd.read_csv("production_data.csv")
quality_checks = pd.read_csv("quality_checks.csv")

# Join quality_checks to production_data
df = quality_checks.merge(production_data, left_on="run_id", right_on="run_id", how="left", suffixes=("", "_production_data"))
print(df.groupby("shift_type").size().sort_values(ascending=False))

Using it in your tool

Excel
Load each table into a separate sheet. Use XLOOKUP to join tables based on common IDs (e.g., operator_id, machine_id, run_id). Create a PivotTable on the quality_checks sheet to analyze results by check_type or defect_code.
Power BI
Model the data using a star schema: 'production_data' as the fact table, with 'operators', 'machines', and 'quality_checks' as dimension tables. Create relationships based on the respective IDs. DAX measures could include: Total Checks = COUNT(quality_checks[check_id]), Failures = CALCULATE(COUNT(quality_checks[check_id]), quality_checks[result] = "Fail"), Pass Rate = DIVIDE([Failures], [Total Checks]).
SQL
Load the SQLite or SQL relational download. Use the specified keys and join paths (e.g., quality_checks.run_id to production_data.run_id) to perform relational queries. Ensure foreign key constraints are maintained if using a relational database.

Formats available

  • CSV (zip)One CSV file per table, zipped
  • Excel workbookOne worksheet per table
  • SQLite databaseA ready-to-query database file with every table
  • Parquet (zip)One Parquet file per table, zipped
  • SQL scriptCREATE TABLE with primary and foreign keys, then INSERTs
  • CSVA single CSV file
  • JSONA single JSON file

How this data was generated

Synthetic data. Every row was generated: no real people, customers or companies are in this dataset.

Synthetic data generated by GoMask DataFactory from a relational blueprint: keys, links and rules are enforced in code, text columns are filled by a language model. No real people, companies or transactions.

  • Data was synthetically generated using GoMask DataFactory.
  • Production and quality check data are correlated.
  • Operator and machine data are linked to production runs.
  • Checked by an automated quality gate: unique keys, no orphan foreign keys, required columns filled, declared rules and date ranges (realism score 100).

Limitations

  • The dataset is synthetic and does not represent real-world events or entities.
  • Defect codes are limited to a predefined set.
  • The dataset does not include reasons for defects, only their classification.
  • Distributions and correlations are modelled, not measured from real records.

blueprint · quality-control-dataset

Scale this dataset

Same tables. As many rows as you need.

Open the blueprint behind these 4 tables in Data Factory: keep the relationships, change a column, and generate it at the size you need.

  • 200,000 rows
  • 1,000,000 rows
Scale this dataset in Data Factory
Tables
operators, machines, production_data, quality_checks
Licence
yours to use, including commercially
API slug
quality-control-dataset

What should your data show?

Preview 20 rows free
No signup. No card.