Creating a Power BI restaurant dashboard doesn’t have to be complicated or time-consuming. In this tutorial, you’ll learn how to build a fully functional Power BI restaurant dashboard from raw CSV data in under an hour. Using real-world restaurant operations data, we’ll go from data import and transformation to star schema modeling, DAX measures, and report visuals all within a single Power BI solution.
Want to level up your Power BI skills? Explore expert-led training at DataBear
Step 1: Define Business Questions
The project starts with four core questions:
- Which restaurant generates the most revenue?
- Which main entree takes the least time to prepare?
- Which server is upselling the most items?
- Which order type results in the highest average order value?
These questions drive the data modeling and reporting decisions made throughout the build.
Step 2: Design the Star Schema
To optimize performance and clarity, the data is transformed into a star schema with:
- A central fact table:
Orders - Four dimension tables:
RestaurantsServersMenu ItemsDate
Each dimension connects to the Orders table using unique keys. This setup enhances slicer functionality, improves DAX performance, and aligns with Power BI’s best practices.
Step 3: Import and Transform the Data
Using Power Query:
- Load the CSV data file.
- Duplicate and clean the query to create separate dimension tables.
- Use the remove duplicates and remove other columns features to isolate relevant fields.
- Create a date table using a predefined M script with parameters for start and end dates.
Each table is then prepared with clean column names and appropriate data types (e.g., text, whole number, date).
Step 4: Build the Data Model
In Power BI Desktop’s Model View:
- Ensure proper one-to-many relationships between the fact and dimension tables.
- Manually connect the
DateandOrderstables via theDatecolumn. - Create hierarchies (e.g., Category > Menu Item) for easier drill-downs.
- Hide unnecessary columns like foreign keys (IDs) to declutter the report view.

Step 5: Write Key DAX Measures
Five essential DAX measures are created in the Orders table:
- Total Revenue
SUM(Orders[Total Amount]) - Total Orders
COUNTROWS(Orders) - Average Order Value
DIVIDE([Total Revenue], [Total Orders]) - Average Prep Time
AVERAGE(Orders[Prep Time]) - Average Prep Time (Main Entree Only)
CALCULATE( [Average Prep Time], 'Menu Items'[Category] = "Main Entree" )
These calculations power all visual insights in the reports.
Step 6: Build Report Pages
Overview Page
- Card visuals for total revenue, order count, average order value, and average prep time.
- Line chart showing revenue by month.
- Bar chart comparing revenue by order type.
Menu Items Page
- Tree map showing revenue by menu item.
- Matrix with prep time hierarchy (category > item).
- Slicer for menu category.
- Column chart for average prep time per item, color-coded by category.
Restaurants Page
- Bar chart for revenue by restaurant.
- Bar chart for average customer rating by restaurant.
- Line chart for order volume by time of day.
- Location slicer for restaurant filtering.
Servers Page
- Bar chart showing average quantity per order by server.
- Scatter chart comparing prep time, customer rating, and order value.
- Table with both sum and average quantity per server.
Blanks are excluded where appropriate (e.g., for delivery orders with no server).
Final Thoughts
This step-by-step walkthrough proves how efficient and powerful Microsoft Fabric Power BI can be when combined with strong data modeling and DAX fundamentals. From raw data to insights, the entire build took under an hour and included key metrics, best practices, and real-world scenarios.
Want more in-depth learning? Check out Power BI training at DataBear



