Dashboard Design — Sales Dashboard¶
Dashboard Purpose¶
A 2-page Power BI dashboard for sales leadership: - Page 1 — Executive Overview: the Monday-morning answer to "how are we doing?" - Page 2 — Profitability Deep Dive: the discount/margin story for the CFO
Page 1 — Executive Overview¶
┌──────────────────────────────────────────────────────────────────┐
│ Revenue Profit Margin Orders AOV │
│ $2.30M $286K 12.5% 5,009 $459 │
│ ▲ 8% YoY ▲ 3% YoY ▼ 1.2pt ▲ 6% YoY ▲ 2% │
├──────────────────────────────────────────────────────────────────┤
│ │
│ Monthly Revenue & Profit Trend (line + bar combo) │
│ [Revenue bars + profit line over 48 months] │
│ │
├────────────────────────────────┬───────────────────────────────────┤
│ Revenue by Category │ Revenue by Region (map) │
│ [Horizontal bar] │ [Filled US map] │
├────────────────────────────────┼───────────────────────────────────┤
│ Top 10 Products │ Segment Breakdown │
│ [Bar] │ [Donut] │
└────────────────────────────────┴───────────────────────────────────┘
Slicers: [Year] [Region] [Segment] [Category]
Page 2 — Profitability Deep Dive¶
┌──────────────────────────────────────────────────────────────────┐
│ Loss-Making Items: 1,871 (18.7%) Profit Lost: -$130K │
├──────────────────────────────────────────────────────────────────┤
│ │
│ Profit by Discount Band (this is the headline chart) │
│ [Bar: profit turns negative above 20% discount] │
│ │
├────────────────────────────────┬───────────────────────────────────┤
│ Margin by Sub-Category │ Discount vs Profit Scatter │
│ [Bar, sorted ascending — │ [Scatter, colored by category] │
│ loss-makers in red] │ │
└────────────────────────────────┴───────────────────────────────────┘
Building in Power BI Desktop¶
Step 1 — Load and Model¶
- Get Data → Text/CSV →
superstore_clean.csv - Verify types:
order_dateas Date,sales/profitas Decimal - Create a Date table for time intelligence:
- Mark it as a date table and relate
DateTable[Date]→sales[order_date]
Step 2 — Core DAX Measures¶
Total Revenue = SUM(sales[sales])
Total Profit = SUM(sales[profit])
Profit Margin = DIVIDE([Total Profit], [Total Revenue], 0)
Total Orders = DISTINCTCOUNT(sales[order_id])
Avg Order Value = DIVIDE([Total Revenue], [Total Orders], 0)
-- Year over year
Revenue LY = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(DateTable[Date]))
Revenue YoY % = DIVIDE([Total Revenue] - [Revenue LY], [Revenue LY], 0)
-- Loss-making
Loss Making Items = CALCULATE(COUNTROWS(sales), sales[profit] < 0)
Loss Making % = DIVIDE([Loss Making Items], COUNTROWS(sales), 0)
Profit Lost = CALCULATE(SUM(sales[profit]), sales[profit] < 0)
Step 3 — KPI Cards¶
Add Card visuals for Revenue, Profit, Margin, Orders, AOV. Use the YoY measures in the callout for the trend indicator. Apply conditional formatting (green ▲ / red ▼).
Step 4 — Combo Chart (Revenue + Profit Trend)¶
- Visual: Line and stacked column chart
- X-axis:
DateTable[Date](month hierarchy) - Column values:
Total Revenue - Line values:
Total Profit
Step 5 — Map¶
- Visual: Filled Map
- Location:
state - Color saturation:
Total Profit(so low-margin states show red)
Step 6 — Profit by Discount Band (Page 2 headline)¶
- Visual: Clustered column chart
- X-axis:
discount_band - Y-axis:
Total Profit - Conditional formatting: bars turn red when profit is negative
Step 7 — Slicers and Interactions¶
Add slicers for Year, Region, Segment, Category. Verify cross-filtering works (clicking a category filters all visuals).
Design Checklist¶
- [ ] KPI cards show trend vs last year, not just the raw number
- [ ] The "Furniture has low margin" story is visible at a glance
- [ ] The "discounts above 20% lose money" chart is the focal point of Page 2
- [ ] Consistent colour scheme (one accent colour, red reserved for losses)
- [ ] Slicers work across all visuals
- [ ] Loss-making items are highlighted, not hidden