• 3 tables
  • 23,731 rows
  • 7 formats
  • synthetic data

Food Delivery Dataset for Analysts

This ready-made food delivery dataset is designed for analysts practicing SQL and Power BI. It includes 23,731 synthetic records across three tables, covering orders, customers, and deliveries. A free sample is available, with the full download requiring credits.

  • last updated 13 Oct 2026
  • by GoMask
  • Dataset contains 23,731 rows and 15 columns.
  • Covers orders, customers, and deliveries data.
  • Data spans from 2022-01-01 to 2024-12-31.
  • Includes sample data for free preview.
  • Available in CSV, Excel, SQL, and other formats.

At a glance

  • 3tables
  • 23,731rows
  • 15columns
  • Jan 2022 – Dec 2024date range

The 3 tables

preview and data dictionary per table

Customers customers · table · 5,000 rows

Information about the customers.

Preview

First 10 of 5,000 rows of the Customers table
customer_iduuidcustomer_namestringcitystringstatestringsignup_datedate
6b67b28f-d528-4fc9-b242-c1ef2c412a07Jeffrey ThompsonChicagoIL2024-09-08
9eb851e0-21fd-462c-beda-06f3b17e5eb5Thomas MillerPhoenixAZ2023-03-26
cec9905f-7fdb-4405-ae46-f4192d6cf0cdArthur DavisAustinTX2022-04-01
5e9f56e8-2a2f-49a8-9601-7dcf89c8cc30Carol RodriguezHoustonTX2022-04-18
bae6614c-3872-4e09-8bbc-590f7575541fDonald WilsonPhoenixAZ2023-08-22
83ea9283-cdee-4e6d-a241-44906db33464Sharon MartinezDallasTX2022-11-10
83187fb0-dd21-438d-afbd-5bc1ebf93e08Richard AndersonLos AngelesCA2024-06-22
21679ca5-46e6-4cb7-affc-ce8824d235eeElizabeth ThomasSan DiegoCA2024-03-28
de013651-9151-440d-b2b4-c712b5896571Charles JacksonNew YorkNY2023-06-23
b6ce594c-f097-4cb3-b03e-ddd2db1c2399Linda WhiteSan AntonioTX2024-11-16
10 of 5,000 rows · 5 columns

Data dictionary

Data dictionary for the Customers table
columntypedescriptionexamplenull %
customer_iduuidUnique identifier for the customer.unique6b67b28f-d528-4fc9-b242-c1ef2c412a070%
customer_namestringFull name of the customer.Jeffrey Thompson0%
citystringCity of customer residence.Chicago0%
statestringUS State of customer residence.IL0%
signup_datedateDate when customer created their account.2024-09-080%

Deliveries deliveries · dimension table · 10,000 rows

Details of each delivery fulfillment.

Preview

First 10 of 10,000 rows of the Deliveries table
delivery_iduuiddriver_idstringdelivery_timedatetimedelivery_regionstring
79ea5af9-b5f9-4535-996f-f877496fd54aDRV-20552023-01-26 19:55:10Central
55293261-a051-4f8c-a964-8c55c2a2b264DRV-81942024-04-14 19:11:34Central
9d03488b-8fbc-4590-9418-834cc9e80b2dDRV-65162022-11-19 11:49:45Central
ad8859bf-687d-46d1-abc7-c57513bd42b7DRV-95752024-05-11 12:48:13Central
502306ee-d0c7-4cda-a78f-ac92968c575dDRV-59182023-08-20 20:57:08Central
9be073f3-1104-41f8-b5bc-fb676fc55ac5DRV-76602022-05-19 17:49:11Central
669add39-6bd2-489c-929d-612068d93f83DRV-85642024-07-14 11:55:12Central
2c120895-d129-41ce-9039-1183a64625f9DRV-79792022-08-17 22:00:36Central
b24dc7db-f61c-45b6-a412-f1ebc2ab51caDRV-80012024-06-16 15:58:26Central
f72b954d-68b6-4d5c-afb2-a0272dffd9daDRV-60672023-09-14 19:50:25Central
10 of 10,000 rows · 4 columns

Data dictionary

Data dictionary for the Deliveries table
columntypedescriptionexamplenull %
delivery_iduuidPrimary key identifying the delivery fulfillment record.79ea5af9-b5f9-4535-996f-f877496fd54a0%
driver_idstringIdentifier of the courier/driver handling the delivery.DRV-20550%
delivery_timedatetimeTimestamp when the order was completed and delivered to customer.2023-01-26 19:55:100%
delivery_regionstringGeographic fulfillment sector for the delivery.Central0%

Orders orders · fact table · 8,731 rows

Records of customer orders.

Preview

First 1 of 8,731 rows of the Orders table
order_iduuidorder_datedateorder_timestringorder_valuedecimalcustomer_iduuiddelivery_iduuid
dcb31f71-34b2-467c-bdc1-47e77374c3ad2022-09-1220:31:2219.955e9f56e8-2a2f-49a8-9601-7dcf89c8cc30f9cb9989-65ef-4a58-a251-ec2cbf805f61
1 of 8,731 rows · 6 columns

Data dictionary

Data dictionary for the Orders table
columntypedescriptionexamplenull %
order_iduuidUnique identifier for each placed order.ad3e1df0-ca60-4715-be70-13baccbaf9ad0%
order_datedateDate when the order was placed between 2022 and 2024.2023-11-260%
order_timestringTime of day when the order was placed in 24-hour HH:MM:SS format.22:37:220%
order_valuedecimalTotal checkout value of the order in USD.19.050%
customer_iduuidForeign key to customers.customer_id.8fd204ef-3c0f-43d8-86bd-895163dfae280%
delivery_iduuidForeign key to deliveries.delivery_id.edb57441-6915-48de-ac27-2a4cfd081ba60%

How the tables join

  • orders.customer_id references customers.customer_idmany to one: each Orders row points to one Customers row
  • orders.delivery_id references deliveries.delivery_idmany to one: each Orders row points to one Deliveries row

Questions to answer with it

  1. Calculate the average delivery time per region using the deliveries and orders tables.

    Join deliveries and orders on delivery_id. Extract the hour from delivery_time. Group by delivery_region.

    tables: deliveries, orders

  2. Identify the top 10 customers by order frequency using the customers and orders tables.

    Join customers and orders on customer_id. Count orders per customer. Order by count descending and take the top 10.

    tables: customers, orders

  3. Determine the peak hours for food delivery orders by analyzing order_time in the orders table.

    Extract the hour from the order_time column. Group by hour and count the number of orders. Find the hour with the maximum count.

    tables: orders

  4. Create a Power BI dashboard showing total order value by region and customer.

    Join all three tables. Use visuals to show SUM(orders.order_value) by deliveries.delivery_region and customers.customer_name.

    tables: customers, orders, deliveries

Starter SQL

run against this data before publishing

Table names match the SQLite file and the SQL script.

Average Order Value by Customer City

sql
SELECT c.city, AVG(o.order_value) AS average_order_value
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.city
ORDER BY average_order_value DESC
LIMIT 20;

Total Orders per Delivery Region

sql
SELECT d.delivery_region, COUNT(o.order_id) AS total_orders
FROM deliveries d
JOIN orders o ON d.delivery_id = o.delivery_id
GROUP BY d.delivery_region
ORDER BY total_orders DESC
LIMIT 20;

Customer with Most Orders

sql
SELECT c.customer_name, COUNT(o.order_id) AS order_count
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
ORDER BY order_count DESC
LIMIT 1;

Delivery Time Trend by Month

sql
SELECT STRFTIME('%Y-%m', d.delivery_time) AS delivery_month, AVG(STRFTIME('%s', d.delivery_time) - STRFTIME('%s', o.order_date)) AS avg_delivery_seconds
FROM deliveries d
JOIN orders o ON d.delivery_id = o.delivery_id
GROUP BY delivery_month
ORDER BY delivery_month
LIMIT 20;

Load it with pandas

python
import pandas as pd

# Unzip the CSV download first: one file per table
customers = pd.read_csv("customers.csv")
deliveries = pd.read_csv("deliveries.csv")
orders = pd.read_csv("orders.csv")

# Join orders to customers
df = orders.merge(customers, left_on="customer_id", right_on="customer_id", how="left", suffixes=("", "_customers"))
print(df.groupby("city").size().sort_values(ascending=False))

Using it in your tool

Excel
Load each table into a separate Excel sheet. Use Power Query to join tables based on their keys (e.g., customer_id, delivery_id). Create a PivotTable from the joined data to summarize order values by region.
Power BI
Create a star schema by connecting the 'orders' table (fact table) to 'customers' and 'deliveries' tables (dimension tables) using their respective keys. Build measures like Total Order Value (SUM(orders[order_value])) and Average Delivery Time (AVERAGE(deliveries[delivery_time])).
SQL
Load the SQLite or SQL relational download. The tables are pre-defined with primary and foreign keys. Join 'orders' with 'customers' on 'customer_id' and with 'deliveries' on 'delivery_id' to analyze relationships.

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 is synthetically generated by GoMask DataFactory.
  • Data is designed to mimic typical food delivery operations.
  • 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 actual user behavior or market conditions.
  • Delivery driver performance metrics are not included.
  • Customer location data is limited to city and state.
  • Distributions and correlations are modelled, not measured from real records.

blueprint · food-delivery-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
Scale this dataset in Data Factory
Tables
customers, deliveries, orders
Licence
yours to use, including commercially
API slug
food-delivery-dataset

What should your data show?

Preview 20 rows free
No signup. No card.