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.
At a glance
- 4tables
- 30,041rows
- 20columns
- Jan 2023 – Dec 2024date range
The 4 tables
preview and data dictionary per tableOperators operators · dimension table · 50 rows
Information about the manufacturing operators.
Preview
| operator_iduuid | operator_namestring | hire_datedate |
|---|---|---|
| 0ea2b9c5-e48f-4bb4-aa41-e2697e265b16 | Omar Hassan | 2012-01-10 |
| 2b4aafb8-6aea-45ef-88b5-52fae54f57cc | Priya Sharma | 2018-06-08 |
| e7e52058-be73-4f64-8f35-6f293da0efdd | Mateo Garcia | 2013-11-20 |
| 4f531463-a919-42cd-930b-3dd0659f9066 | Aisha Khan | 2023-08-21 |
| f813b22d-b1cc-4882-882c-00a397cc294d | Kenji Tanaka | 2022-07-19 |
| 05a1fcfc-8e44-4dff-a808-d3f880c1b663 | Fatima Rossi | 2018-03-12 |
| 64e6748b-8eaf-40a5-8347-e646a4ffaa93 | Diego Silva | 2018-09-07 |
| 3f40ade4-21df-470b-a0c2-28aadfd30b25 | Javier Rodriguez | 2011-02-24 |
| a3b9d540-8caf-4514-8d53-58e1ccc8f5c9 | Ananya Patel | 2014-07-25 |
| 34e25475-4c13-48b0-9bd7-a32a50a61878 | Carlos Torres | 2013-07-03 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
operator_ | uuid | Unique identifier for the manufacturing operator.unique | 0ea2b9c5-e48f-4bb4-aa41-e2697e265b16 | 0% |
operator_ | string | Full name of the machine operator. | Omar Hassan | 0% |
hire_ | date | Date the operator was hired by the manufacturing facility. | 2012-01-10 | 0% |
Machines machines · dimension table · 20 rows
Details of the manufacturing machines used.
Preview
| machine_iduuid | machine_modelstring | installation_datedate |
|---|---|---|
| 5f3294b9-e42c-4bc3-bbd9-5cc7e879764c | CNC-Mill-X200 | 2024-09-16 |
| bb6b2783-8daa-4541-90e3-97b5817ba0dd | CNC-Mill-X500 | 2024-05-29 |
| ec4fa098-2e42-4646-807e-b76c683be521 | CNC-Mill-X500 | 2023-05-21 |
| d13a4dbd-3d0f-4ddd-ab41-f9a12cc79fc5 | CNC-Mill-X200 | 2023-07-07 |
| baf9b7de-28e5-46e2-96fc-cee448f2b394 | CNC-Mill-X500 | 2024-06-16 |
| 5756b9a1-5f82-4ad7-b4db-b67aaaec00a7 | CNC-Mill-X200 | 2024-08-09 |
| 9529b6b9-7501-4e3b-a58b-e1d36d330f7b | CNC-Mill-X200 | 2024-10-11 |
| 3f2324bf-ec9e-415b-a8a1-7bf3ddaf5731 | CNC-Mill-X500 | 2023-03-07 |
| 301b038d-61f3-4b6c-8c9e-6a9fa1a59df8 | InjMolding-Pro-120 | 2024-08-21 |
| b8b85212-1279-4224-b484-a6db72814292 | InjMolding-Pro-120 | 2023-07-03 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
machine_ | uuid | Unique identifier for the manufacturing machine.unique | 5f3294b9-e42c-4bc3-bbd9-5cc7e879764c | 0% |
machine_ | string | Model series designation for the industrial machinery. | CNC-Mill-X200 | 0% |
installation_ | date | Date on which the machinery was installed and commissioned in the facility.unique | 2024-09-16 | 0% |
Production data production_data · table · 5,000 rows
Records of individual production runs.
Preview
| run_iduuid | product_idstring | production_datedate | batch_quantityinteger | shift_typestring | operator_iduuid | machine_iduuid |
|---|---|---|---|---|---|---|
| 94791e9e-9a74-42c8-8ea2-4fad8f89e42f | PRD-045 | 2024-06-18 | 718 | Morning | 9538166d-c3e5-4b01-990a-be4e5dfcf202 | 77aa35d0-1cc4-4814-99e0-b6e689ab6a1a |
| 65d59c9a-4304-411d-a2aa-b901d539f1d6 | PRD-078 | 2024-07-26 | 2016 | Morning | 883c5d4a-cc07-4e9e-bbba-1c3f46c248c1 | 9ff28b91-31d9-485f-a2ab-5e0b43cf9d6e |
| c5e6e588-cb4d-4ddc-a425-f25c0f40302f | PRD-012 | 2024-11-29 | 1806 | Morning | eac8dbcd-5e63-4fdf-851f-fa4a14d693e2 | 9529b6b9-7501-4e3b-a58b-e1d36d330f7b |
| d8f78c74-4b37-4058-a43f-ea6e7a54cd9d | PRD-099 | 2024-10-24 | 1211 | Morning | 3f40ade4-21df-470b-a0c2-28aadfd30b25 | 9ff28b91-31d9-485f-a2ab-5e0b43cf9d6e |
| 8f54f604-1827-4c6b-acf3-3ee6b97b4976 | PRD-033 | 2023-01-13 | 1341 | Morning | 0a778a7a-08ba-41a4-8d3b-c4595f6a35f3 | 77aa35d0-1cc4-4814-99e0-b6e689ab6a1a |
| f4c02f4e-9f2d-4780-81e0-74b4116acc7d | PRD-056 | 2024-11-22 | 605 | Morning | 3ac5329d-05c1-49a1-945a-ba8aa1aa22ac | ea2b2136-bfea-4b74-9829-f000d2bd4058 |
| ee23d196-86b5-45c7-9ff5-9ca01a29f018 | PRD-081 | 2023-12-14 | 839 | Morning | f9112302-c684-4c16-8158-2959e7c6dca3 | da0d304e-2d50-444e-997b-b894b64a8190 |
| 18374195-1413-47c4-8ec1-c9a4da02d1c7 | PRD-002 | 2024-09-28 | 1278 | Morning | 883c5d4a-cc07-4e9e-bbba-1c3f46c248c1 | 98db2c0e-9e58-45ee-ae9f-e83eebc18f88 |
| 8f3a1b48-fcab-446e-a948-f7930e0397b4 | PRD-067 | 2024-07-06 | 876 | Morning | 51558957-4d0a-4142-a6fc-bbcd51fbb182 | ec4fa098-2e42-4646-807e-b76c683be521 |
| 7ecb2f21-4326-4add-9499-b0b4cf914e71 | PRD-021 | 2023-11-22 | 715 | Morning | 732670e0-797e-4b23-b474-15057eb1a4b2 | 3f2324bf-ec9e-415b-a8a1-7bf3ddaf5731 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
run_ | uuid | Unique identifier for the manufacturing production run.unique | 94791e9e-9a74-42c8-8ea2-4fad8f89e42f | 0% |
product_ | string | Identifier of the manufactured product model. | PRD-045 | 0% |
production_ | date | Date on which the production batch run took place. | 2024-06-18 | 0% |
batch_ | integer | Total number of units produced in this specific run. | 718 | 0% |
shift_ | string | Factory operational shift during which the run occurred. | Morning | 0% |
operator_ | uuid | Foreign key to operators.operator_id. | 9538166d-c3e5-4b01-990a-be4e5dfcf202 | 0% |
machine_ | uuid | Foreign key to machines.machine_id. | 77aa35d0-1cc4-4814-99e0-b6e689ab6a1a | 0% |
Quality checks quality_checks · fact table · 24,971 rows
Results of quality inspections performed on production runs.
Preview
| check_iduuid | check_typestring | resultstring | defect_codestring | inspector_idinteger | check_timestampdatetime | run_iduuid |
|---|---|---|---|---|---|---|
| c8b4ca9b-292b-4f9e-aa90-399552dee5e9 | Dimensional | Pass | blank | 142 | 2023-11-15 17:27:31 | 16c45238-3657-46f6-99c8-3cc09726fe34 |
| 0553bb3c-ee0b-4fd9-83d7-fb733bbc1dd2 | Dimensional | Pass | blank | 117 | 2024-12-12 12:39:01 | 14d2d1a7-2361-41bc-b031-9e902447bd0f |
| eda3e2a2-d2eb-46ea-83d1-a24ce4b459b3 | Dimensional | Pass | blank | 56 | 2024-08-10 06:35:48 | c2203d34-0839-498b-9d26-77776bcd807e |
| 6a585acb-f753-4d95-9d0b-29d19250c7a5 | Functional | Pass | blank | 35 | 2024-11-05 21:35:30 | 3d0bfa95-b3b8-4b3e-a461-9542ad682426 |
| af7b2aa8-6270-4646-8e7e-d2fb7c484f5e | Dimensional | Pass | blank | 61 | 2024-12-27 16:37:23 | aa8337ac-f4fb-4e6e-906b-648b64d102e8 |
| 2943269d-aed7-410c-a603-82e731d858db | Dimensional | Pass | blank | 146 | 2024-10-07 04:12:15 | 75889ad1-8393-4590-8cd9-3ffcf538f91a |
| 43b9472e-fb57-412f-b2cb-e6a87e22c9e9 | Dimensional | Pass | blank | 89 | 2023-11-01 04:03:05 | 02a9f166-5178-48f1-8f22-2797fca80779 |
| 35d0d674-cd41-4fe4-9586-89a78ac366f4 | Dimensional | Pass | blank | 15 | 2024-11-26 12:04:06 | c484c2a3-f65b-4cef-a786-b5108629263a |
| 710191b3-8e10-4ebf-aac4-64936e3358a6 | Functional | Pass | blank | 16 | 2023-10-16 10:28:31 | c28a6bda-caab-492a-befb-1c03638c6b92 |
| 9776beae-b919-406e-99ae-33663872d411 | Functional | Pass | blank | 56 | 2024-01-25 02:35:11 | b5fc7dd6-4877-4bc4-afb5-426af45d941e |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
check_ | uuid | Unique identifier for the quality inspection record. | c8b4ca9b-292b-4f9e-aa90-399552dee5e9 | 0% |
check_ | string | Category of quality inspection performed. | Dimensional | 0% |
result | string | Final assessment result of the quality check. | Pass | 0% |
defect_ | string | Specific defect classification code when an issue is detected. | WRP | 90% |
inspector_ | integer | Unique identifier of the quality control inspector. | 142 | 0% |
check_ | datetime | Timestamp at which the inspection was completed. | 2023-11-15 17:27:31 | 0% |
run_ | uuid | Foreign key to production_data.run_id. | 16c45238-3657-46f6-99c8-3cc09726fe34 | 0% |
How the tables join
quality_checks.run_id references production_data.run_idmany to one: each Quality checks row points to one Production data rowproduction_data.operator_id references operators.operator_idmany to one: each Production data row points to one Operators rowproduction_data.machine_id references machines.machine_idmany to one: each Production data row points to one Machines row
Questions to answer with it
What are the most common defect codes observed in quality checks, and which production runs are most affected?
tables: quality_checks, production_data
Identify operators or machines associated with a higher incidence of defects (Fail result).
tables: quality_checks, operators, machines
Analyze the trend of defect rates over time for specific product IDs.
tables: quality_checks, production_data
Calculate the overall pass rate for each check type.
tables: quality_checks
Starter SQL
run against this data before publishingTable names match the SQLite file and the SQL script.
Top 4 Defect Codes and Their Counts
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
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
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
SELECT shift_type, AVG(batch_quantity) AS avg_batch_quantity FROM production_data GROUP BY shift_type LIMIT 20;Pass Rate per Check Type
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
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
- Tables
- operators, machines, production_data, quality_checks
- Licence
- yours to use, including commercially
- API slug
- quality-control-dataset