Sales Dataset for Analysis and Practice
This ready-made sales dataset is ideal for analysts looking to practice their skills in Power BI and Excel. It includes detailed information across customers, products, and sales transactions. Preview rows are available for free, with the full dataset downloadable using credits.
At a glance
- 3tables
- 12,855rows
- 21columns
- Jan 2023 – Dec 2025date range
The 3 tables
preview and data dictionary per tableCustomers customers · table · 5,000 rows
Information about retail customers.
Preview
| customer_iduuid | first_namestring | last_namestring | emailstring | citystring | statestring | customer_segmentstring | loyalty_tierstring | signup_datedate |
|---|---|---|---|---|---|---|---|---|
| 64e6748b-8eaf-40a5-8347-e646a4ffaa93 | Maria | Smith | [email protected] | New York | NY | Consumer | Bronze | 2024-10-01 |
| da6cfcdc-3813-45ff-9d16-d25eaf3df3f4 | David | Sullivan | [email protected] | Los Angeles | CA | Consumer | Bronze | 2025-12-06 |
| f6020004-cca9-4bf3-bb4e-d0db84616d8c | Maria | Stewart | [email protected] | Chicago | IL | Consumer | Bronze | 2024-02-14 |
| 62aa5f32-25e9-4eab-85dd-47284f24c62e | James | Scott | [email protected] | Houston | TX | Consumer | Bronze | 2024-11-30 |
| 7b27c774-5d4a-4edc-96f7-7fbc7eb566f3 | Olivia | Sanders | [email protected] | Phoenix | AZ | Consumer | Bronze | 2024-07-27 |
| f9ff76c9-e3e5-43f9-99e4-20a39912ade1 | William | Simmons | [email protected] | Philadelphia | PA | Consumer | Silver | 2023-12-03 |
| 41856399-c461-44b3-a4f5-10688198719b | Ava | Sanchez | [email protected] | San Antonio | TX | Consumer | Bronze | 2024-08-17 |
| 237d76e7-9554-47f1-917c-81ff9bd00947 | Michael | Stewart | [email protected] | San Diego | CA | Consumer | Bronze | 2023-07-08 |
| 2031bba1-4ddb-4936-bdfb-6e3498a5fd75 | Isabella | Smith | [email protected] | Dallas | TX | Consumer | Bronze | 2025-01-03 |
| 59d28aa5-ef52-47b5-b67c-4b22b1b48a51 | Alexander | Scott | [email protected] | Austin | TX | Consumer | Bronze | 2025-04-29 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
customer_ | uuid | Unique identifier for each retail customer.unique | 64e6748b-8eaf-40a5-8347-e646a4ffaa93 | 0% |
first_ | string | Given name of the customer. | Maria | 0% |
last_ | string | Surname or family name of the customer. | Smith | 0% |
email | string | Primary email contact address for the customer.unique | [email protected] | 0% |
city | string | US city where the customer resides or is registered. | New York | 0% |
state | string | US state abbreviation for the customer's billing or store location. | NY | 0% |
customer_ | string | Market classification segment for the customer. | Consumer | 0% |
loyalty_ | string | Retail membership program tier reflecting customer loyalty. | Bronze | 0% |
signup_ | date | Date when the customer profile or loyalty membership was initiated. | 2024-10-01 | 0% |
Products products · dimension table · 100 rows
Details about the products available for sale.
Preview
| product_iduuid | product_namestring | categorystring | pricedecimal |
|---|---|---|---|
| c66ae24f-7ff2-4550-b1ee-695281ff640b | Professional 4K UHD Camcorder with 20x Optical Zoom | Electronics | 1464.68 |
| 9da35863-7f7a-490e-b4e7-71256cf85ca8 | High-Fidelity Noise-Cancelling Over-Ear Headphones | Electronics | 184.38 |
| 4c3a623e-84e1-4d3c-819a-5f61339b1a5c | Smart Home Security System with 8 Cameras and Cloud Storage | Electronics | 1167.01 |
| 41c60ae0-1448-4616-b98c-d5c49cdf6ea9 | Ultra-Thin 15-inch QHD Laptop with 16GB RAM | Electronics | 1061.5 |
| 44b8bc2b-6546-460a-9ddb-09170213dfa5 | Wi-Fi Enabled Robotic Vacuum Cleaner with Self-Emptying Base | Electronics | 1315.62 |
| becefc35-9756-44a1-9a35-608b48a31b64 | Portable 1TB External Solid State Drive with USB-C | Electronics | 853.96 |
| b7620257-fabf-498f-8b85-7c3ae3ec86d3 | Compact Espresso Machine with Integrated Grinder | Electronics | 783.42 |
| 7d942fdf-336d-4413-88b5-d9c339a647e1 | Ergonomic Wireless Gaming Mouse with RGB Lighting | Electronics | 589.38 |
| 5f6da2fb-6906-4075-8033-66689ee8f6fa | Bluetooth Smart Speaker with Voice Assistant Integration | Electronics | 206.44 |
| 32c46618-e757-487a-b280-59736dc884e5 | 6-Quart Digital Air Fryer with Multiple Cooking Presets | Electronics | 235.09 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
product_ | uuid | Unique identifier for the product item in the retail catalog.unique | c66ae24f-7ff2-4550-b1ee-695281ff640b | 0% |
product_ | string | Descriptive retail name of the product item.unique | Professional 4K UHD Camcorder with 20x Optical Zoom | 0% |
category | string | Merchandise category to which the product belongs. | Electronics | 0% |
price | decimal | Standard retail list price of the product in USD. | 1464.68 | 0% |
Sales sales · fact table · 7,755 rows
Records of individual sales transactions.
Preview
| sale_iduuid | sale_datedate | quantityinteger | unit_pricedecimal | discount_percentdecimal | total_sale_amountdecimal | customer_iduuid | product_iduuid |
|---|---|---|---|---|---|---|---|
| 96df8e6a-4c6f-432c-8a28-b351f41c9b2a | 2024-08-26 | 2 | 25.74 | 25.6 | 38.3 | 7b27c774-5d4a-4edc-96f7-7fbc7eb566f3 | 9748d119-6cfe-4ef0-9870-b3b72601b032 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
sale_ | uuid | Unique transaction record identifier. | ec776ae5-eed1-4837-b938-83c93caf5d65 | 0% |
sale_ | date | Date of the retail point-of-sale purchase. | 2025-10-06 | 0% |
quantity | integer | Quantity of the product purchased in the transaction. | 1 | 0% |
unit_ | decimal | Unit selling price of the product at time of transaction. | 19.77 | 0% |
discount_ | decimal | Discount percentage applied to the line item, from 0% to 30%. | 21 | 0% |
total_ | decimal | Total line amount equal to quantity * unit_price * (1 - discount_percent / 100). | 15.62 | 0% |
customer_ | uuid | Foreign key to customers.customer_id. | f5295826-0a5f-4ea6-bb14-bd5f9efed8f7 | 0% |
product_ | uuid | Foreign key to products.product_id. | 019156aa-3c27-42c1-ae51-be954fc23461 | 0% |
How the tables join
sales.customer_id references customers.customer_idmany to one: each Sales row points to one Customers rowsales.product_id references products.product_idmany to one: each Sales row points to one Products row
Questions to answer with it
What is the total revenue generated by each product category?
Join sales and products tables on product_id, then group by products.category and sum sales.total_sale_amount.
tables: sales, products
Which customers are repeat buyers and what is their average purchase value?
Join sales and customers tables on customer_id. Group by customer_id and count the number of sales. Filter for customers with more than one sale and calculate the average total_sale_amount.
tables: sales, customers
Analyze the seasonality of sales over different periods.
Extract the month and year from sale_date. Create a pivot table or use GROUP BY to show total sales by month and year.
tables: sales
What is the average discount percentage applied to sales?
Calculate the average of the discount_percent column in the sales table.
tables: sales
Starter SQL
run against this data before publishingTable names match the SQLite file and the SQL script.
Total Sales Amount by Product Category
SELECT p.category, SUM(s.total_sale_amount) AS total_revenue
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.category
ORDER BY total_revenue DESC
LIMIT 20;Top 20 Customers by Total Spending
SELECT c.customer_id, c.first_name, c.last_name, SUM(s.total_sale_amount) AS total_spent
FROM customers c
JOIN sales s ON c.customer_id = s.customer_id
GROUP BY c.customer_id, c.first_name, c.last_name
ORDER BY total_spent DESC
LIMIT 20;Monthly Sales Trend
SELECT STRFTIME('%Y-%m', s.sale_date) AS sale_month, SUM(s.total_sale_amount) AS monthly_revenue
FROM sales s
GROUP BY sale_month
ORDER BY sale_month
LIMIT 20;Product with Highest Average Unit Price
SELECT product_id, AVG(unit_price) AS average_unit_price
FROM sales
GROUP BY product_id
ORDER BY average_unit_price DESC
LIMIT 20;Load it with pandas
import pandas as pd
# Unzip the CSV download first: one file per table
customers = pd.read_csv("customers.csv")
products = pd.read_csv("products.csv")
sales = pd.read_csv("sales.csv")
# Join sales to customers
df = sales.merge(customers, left_on="customer_id", right_on="customer_id", how="left", suffixes=("", "_customers"))
print(df.groupby("customer_segment").size().sort_values(ascending=False))Using it in your tool
- Excel
- Load each table into a separate sheet. Use Power Query to join tables based on their respective IDs (e.g., customer_id, product_id). Create a PivotTable from the joined sales data to analyze revenue by product category or customer segment.
- Power BI
- Create relationships between the customers, products, and sales tables using the customer_id and product_id keys to establish a star schema. Develop DAX measures for Total Sales (SUM(sales[total_sale_amount])) and Average Discount (AVERAGE(sales[discount_percent])).
- SQL
- Load the sales, customers, and products tables into your SQL database. Use JOIN clauses on customer_id and product_id to combine data for analysis. For example, to find total sales per category: SELECT p.category, SUM(s.total_sale_amount) FROM sales s JOIN products p ON s.product_id = p.product_id GROUP BY p.category.
- Python
- Use pandas to load the CSV files. Merge the dataframes on common keys (customer_id, product_id). Perform aggregations and analyses using pandas functions like groupby(), agg(), and merge().
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.
- The dataset was generated using GoMask DataFactory.
- It simulates retail sales transactions with associated customer and product information.
- Data includes realistic distributions for quantities, prices, and discounts.
- 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 individuals or transactions.
- Geographic data is limited to US cities and states.
- Discount percentages are capped at 30%.
- Distributions and correlations are modelled, not measured from real records.
blueprint · sales-dataset
Scale this dataset
Same tables. As many rows as you need.
Open the blueprint behind these 3 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
- customers, products, sales
- Licence
- yours to use, including commercially
- API slug
- sales-dataset