• 4 tables
  • 35,239 rows
  • 7 formats
  • synthetic data

Inventory Management Dataset

Analyze stock levels and product movement with this ready-made inventory management dataset. It includes 35,239 rows across 4 tables, perfect for practicing SQL joins and Power BI dashboards. A free sample is available, with full download access costing credits.

  • last updated 2 Oct 2026
  • by GoMask
  • Dataset covers inventory from 2023-01-01 to 2023-12-31.
  • Includes 4 tables: products, warehouses, inventory_levels, and transactions.
  • Features 19 columns detailing product information, stock quantities, and movement.
  • Supports analysis of stock levels, product movement, and category performance.
  • Ready for use with CSV, Excel, SQL, and Power BI.

At a glance

  • 4tables
  • 35,239rows
  • 19columns
  • Jan 2023 – Dec 2023date range

The 4 tables

preview and data dictionary per table

Products products · table · 4,990 rows

Contains details about each product in the inventory.

Preview

First 10 of 4,990 rows of the Products table
product_iduuidproduct_namestringcategorystringunit_pricedecimal
66b3f91d-0c29-4e9a-a9ae-62a80f30fa59Galway Wool SweaterApparel25.11
a4ee8f53-a304-4e37-8110-8d6e68be359cCork Linen TrousersApparel92.63
45b67f23-bd05-4a89-9105-87649a3bc78cBelfast Cotton ShirtApparel26.41
cc2d99b3-a547-4fee-99d0-b6560d88a9b9Wexford Denim JacketApparel70.26
e0cc11c1-38af-47a5-97a4-18ce7437bfd3Limerick Fleece HoodieApparel54.48
f6c8ed2d-e0f7-404a-82d7-4682ebc76fb2Dublin Puffer VestApparel106.86
ce166bbe-7798-4832-bc8b-a053932d69f4Galway Polo ShirtApparel31.87
eaee956c-3c01-4e65-9456-e6763c4e5de4Cork Graphic TeeApparel18
3deb7aec-5fa3-4759-80d2-e38100f33e72Belfast ChinosApparel28.32
b6b82e3a-8d39-47cd-936d-f52881a66fe6Wexford Tank TopApparel13.33
10 of 4,990 rows · 4 columns

Data dictionary

Data dictionary for the Products table
columntypedescriptionexamplenull %
product_iduuidUnique surrogate identifier for each product catalog record.unique66b3f91d-0c29-4e9a-a9ae-62a80f30fa590%
product_namestringStandardized title of the product item including series or descriptive variant.Galway Wool Sweater0%
categorystringBroad commercial classification defining product type and pricing profile.Apparel0%
unit_pricedecimalSelling or valuation price in USD per unit for the specified product item.25.110%

Warehouses warehouses · dimension table · 10 rows

Lists the different warehouse facilities.

Preview

First 10 of 10 rows of the Warehouses table
warehouse_idintegerwarehouse_namestringlocationstring
1Distribution Center BetaLos Angeles, CA
2Omni-Fulfillment EpsilonAtlanta, GA
3Warehouse AlphaNew York, NY
4Central Hub GammaChicago, IL
5Gulf Coast Depot IotaLos Angeles, CA
6Northeast Gateway ZetaSeattle, WA
7Pacific Coast Hub ThetaSeattle, WA
8Midwest Terminal EtaPhoenix, AZ
9Southwest Distribution KappaPhoenix, AZ
10Logistics Depot DeltaDallas, TX
10 of 10 rows · 3 columns

Data dictionary

Data dictionary for the Warehouses table
columntypedescriptionexamplenull %
warehouse_idintegerUnique numeric identifier for the warehouse facility.unique10%
warehouse_namestringDescriptive facility name designating operational center or warehouse tier.uniqueDistribution Center Beta0%
locationstringGeographical city and state representation of the facility.Los Angeles, CA0%

Inventory levels inventory_levels · bridge table · 14,914 rows

Tracks the stock quantity for each product at each warehouse.

Preview

First 10 of 14,914 rows of the Inventory levels table
inventory_iduuidstock_quantityintegerstock_statusstringlast_updateddatetimeproduct_iduuidwarehouse_idinteger
1a3ba0c1-64b5-4ca4-b629-f1b6fc6746ba532optimal2023-10-02 14:58:2642e3f324-0ab4-48a9-baa7-6d07268a67ac8
dd913c4d-9e72-4343-9a12-60b22802a93d102optimal2023-09-20 07:44:345c91d471-f284-4609-8aaf-a394939c8ed28
0811cd7d-eddd-49ab-b1e5-ce373e368f66178optimal2023-03-06 12:08:091d4a624e-98cb-4ecb-bd0e-2de54a4535535
5cdadd50-fe78-417e-87d9-4458e64527a5262optimal2023-12-06 06:51:57e6e0a540-5893-453f-8ce3-0fc5572be2922
3d13b9c6-fc7b-4e20-a6ca-329dd9bd62ff216optimal2023-09-25 13:32:50500cf7e1-343e-403f-81f7-1e2eda96d1b75
6d608c68-9651-480e-894e-aeaf4cd00238321optimal2023-12-28 12:26:04ea9137f4-c319-4d1f-9922-6ac590eb6ef57
65f56e2e-1f13-4091-8418-71574f860e23181optimal2023-12-04 14:35:57653b2304-8150-406e-8efc-5a4a57d751f82
97ed11c2-65ca-45f3-b756-78a1fc27ce81681optimal2023-07-04 14:04:43abc6006a-b24e-4c14-895e-e9724637cebb7
00ad9951-1a5d-47f9-b525-1e1551fb2c39160optimal2023-12-11 22:32:59e639119a-85cc-42ff-99ee-6f5dd84575c16
4bba1263-0625-4909-a60d-1dc187c03064443optimal2023-12-16 13:10:1699eb5e72-9a96-45e3-a65f-6fd2b5be21f84
10 of 14,914 rows · 6 columns

Data dictionary

Data dictionary for the Inventory levels table
columntypedescriptionexamplenull %
inventory_iduuidUnique identifier for the inventory level record.1a3ba0c1-64b5-4ca4-b629-f1b6fc6746ba0%
stock_quantityintegerCurrent quantity of the product on hand at the specific warehouse facility.5320%
stock_statusstringOperational categorization of stock level (out_of_stock, low_stock, optimal, overstocked).optimal0%
last_updateddatetimeTimestamp indicating the last inventory audit, count cycle, or movement reconciliation.2023-10-02 14:58:260%
product_iduuidForeign key to products.product_id.42e3f324-0ab4-48a9-baa7-6d07268a67ac0%
warehouse_idintegerForeign key to warehouses.warehouse_id.80%

Transactions transactions · bridge table · 15,325 rows

Records all inventory movements (in and out) for products.

Preview

First 10 of 15,325 rows of the Transactions table
transaction_idintegertransaction_typestringquantityintegertransaction_datedatetimeproduct_iduuidwarehouse_idinteger
1OUT12023-10-23 05:35:034dee7f0c-f8fb-47cb-a00b-b78afb7b03eb1
2OUT12023-05-15 14:10:06d89e52cf-be14-40b7-9c37-ec6f03f956ec1
3OUT42023-05-25 10:43:49701af371-fd25-4564-b9e8-c0d8160309a510
4OUT12023-07-21 08:04:107cdf729b-5333-4560-ba5d-a3d2ec0979991
5OUT382023-02-10 14:16:37db2245d9-ffcc-4e96-9ac8-baea98abe7242
6OUT322023-12-21 09:45:2068ed8b6f-e377-46f8-a7a2-4ff3629f66d65
7OUT142023-12-21 13:11:58353d61d3-1b72-4ea3-98da-ce0adada0bef4
8OUT132023-03-25 12:38:269df2fefb-d008-4777-8b71-6ab11115b0293
9OUT152023-12-07 13:33:167a06a096-a380-4b16-9a68-15c7b9d634039
10OUT52023-06-26 10:26:575257e8a3-ac25-410b-857f-2572d5dd18eb2
10 of 15,325 rows · 6 columns

Data dictionary

Data dictionary for the Transactions table
columntypedescriptionexamplenull %
transaction_idintegerPrimary key identifier for the inventory movement record.10%
transaction_typestringDirection of inventory movement: IN (restock or return) or OUT (order fulfillment or transfer out).OUT0%
quantityintegerThe number of units moved in this transaction.10%
transaction_datedatetimeTimestamp when the inventory movement occurred.2023-10-23 05:35:030%
product_iduuidForeign key to products.product_id.4dee7f0c-f8fb-47cb-a00b-b78afb7b03eb0%
warehouse_idintegerForeign key to warehouses.warehouse_id.10%

How the tables join

  • inventory_levels.product_id references products.product_idmany to one: each Inventory levels row points to one Products row
  • inventory_levels.warehouse_id references warehouses.warehouse_idmany to one: each Inventory levels row points to one Warehouses row
  • transactions.product_id references products.product_idmany to one: each Transactions row points to one Products row
  • transactions.warehouse_id references warehouses.warehouse_idmany to one: each Transactions row points to one Warehouses row

Questions to answer with it

  1. Which products have the lowest stock levels across all warehouses?

    tables: products, inventory_levels

  2. What is the average daily movement (in/out) for high-demand products?

    tables: products, transactions

  3. How does inventory turnover vary by product category?

    tables: products, inventory_levels, transactions

  4. Identify products with stock below 50 units in any warehouse.

    tables: products, inventory_levels

Starter SQL

run against this data before publishing

Table names match the SQLite file and the SQL script.

Low Stock Products

sql
SELECT p.product_name, SUM(il.stock_quantity) AS total_stock
FROM products p
JOIN inventory_levels il ON p.product_id = il.product_id
WHERE il.stock_status = 'low_stock'
GROUP BY p.product_name
ORDER BY total_stock ASC
LIMIT 20;

Total Units Moved Per Product

sql
SELECT p.product_name, SUM(t.quantity) AS total_units_moved
FROM products p
JOIN transactions t ON p.product_id = t.product_id
GROUP BY p.product_name
ORDER BY total_units_moved DESC
LIMIT 20;

Average Stock Quantity by Warehouse

sql
SELECT w.warehouse_name, AVG(il.stock_quantity) AS average_stock
FROM warehouses w
JOIN inventory_levels il ON w.warehouse_id = il.warehouse_id
GROUP BY w.warehouse_name
ORDER BY average_stock DESC
LIMIT 20;

Product Stock Status Count

sql
SELECT p.product_name, il.stock_status, COUNT(il.inventory_id) AS count
FROM products p
JOIN inventory_levels il ON p.product_id = il.product_id
WHERE il.stock_status != 'optimal'
GROUP BY p.product_name, il.stock_status
ORDER BY count DESC
LIMIT 20;

Load it with pandas

python
import pandas as pd

# Unzip the CSV download first: one file per table
products = pd.read_csv("products.csv")
warehouses = pd.read_csv("warehouses.csv")
inventory_levels = pd.read_csv("inventory_levels.csv")
transactions = pd.read_csv("transactions.csv")

# Join inventory_levels to products
df = inventory_levels.merge(products, left_on="product_id", right_on="product_id", how="left", suffixes=("", "_products"))
print(df.groupby("category").size().sort_values(ascending=False))

Using it in your tool

Excel
Load each table into a separate sheet. Use Power Query to join tables or XLOOKUP for lookups. Create a PivotTable on the inventory_levels sheet, with product and warehouse details, to analyze stock status and quantities.
Power BI
Create a star schema with a central fact table (inventory_levels or transactions) and dimension tables (products, warehouses). Set up relationships based on product_id and warehouse_id. Create measures for total stock, average stock movement, and inventory turnover.
SQL
Load the SQLite or SQL relational download. Use the defined keys and join paths (e.g., inventory_levels.product_id to products.product_id) to perform analyses. Ensure foreign key constraints are considered for accurate joins.
Python
Load CSV files into pandas DataFrames. Use DataFrame operations for joins, aggregations, and analysis. Libraries like pandas and matplotlib can be used for data manipulation and visualization.

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 generated using GoMask DataFactory.
  • Synthetic data mimics inventory management scenarios.
  • Includes products, warehouses, stock levels, and transactions.
  • 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 data is synthetic and does not represent real-world entities.
  • Transaction details are limited to movement type, quantity, and date.
  • Does not include customer or order information.
  • Distributions and correlations are modelled, not measured from real records.

blueprint · inventory-management-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
products, warehouses, inventory_levels, transactions
Licence
yours to use, including commercially
API slug
inventory-management-dataset

What should your data show?

Preview 20 rows free
No signup. No card.