DATA4100 · Week 2 Tutorial

Power BI Tutorial:
Superstore Sales Analysis

Nine real business questions answered step-by-step in Power BI. Each question is followed by a detailed instruction slide showing exactly what to click, drag, and configure.

9 questions
9 chart types
9,994 rows of data
2019 – 2022
Navigate with ← → arrow keys or the buttons below
Superstore Dataset
Total rows9,994
Date range2019–2022
Categories3
Sub-categories17
US Regions4
States49
Customers793
Total Sales$2.30M
Total Profit$286K
Question 01 of 09

Which product subcategory generates the most revenue?

Superstore sells 17 different subcategories of products. The marketing team needs to know where to focus investment — but the raw data table has nearly 10,000 rows and is impossible to read. You need to summarise and rank subcategories visually.

Method: Descriptive Statistics Chart: Column Chart (sorted) Fields: subcategory × sales
→ Next slide: Step-by-step instructions
Answer 01 · Column Chart
Sales by Subcategory — Ranked Bar Chart
Building a sorted clustered column chart from scratch
1
Load your data
Home tab → Get Data → Text/CSV → select Superstore Dataset.csv → click Load
2
Select chart type
Click blank canvas → Visualizations pane → select Clustered Column Chart (2nd icon, row 1)
3
Add the X-axis field
Data pane → drag subcategory → drop into X-axis field well
4
Add the Y-axis field
Data pane → drag sales → drop into Y-axis field well. Power BI defaults to Sum — keep it.
5
Sort descending
Click the chart → … (More options) top-right → Sort axis → subcategory → Sort descending. Bars now rank highest to lowest.
6
Enter Focus mode
Click the Focus mode icon (square with arrow, top-right of chart frame) for a full-screen view.
Important
The Y-axis must always start at zero for a bar chart. Power BI does this by default — do not change it, as it would visually distort the comparison.
Pro tip
Right-click any bar → Drill through to see the individual orders within that subcategory.
Power BI Config
Visualizations → Build Visual
X-axis
subcategory
Y-axis
Sum of sales
Legend
Add data fields here
Output Chart — Sum of Sales by Subcategory
$350K $262K $175K $87K $0 330K Phones Chairs Storage Tables Binders Machines Accessories Copiers Bookcases Appliances Art Fasteners Winner: Phones
$330K
Phones — #1 subcategory
$328K
Chairs — close 2nd
$3K
Fasteners — lowest
Question 02 of 09

Do high-sales categories also generate high profit?

The CFO suspects Technology sells less than Furniture but may be more profitable per unit. She wants a single chart comparing both total quantity sold and total profit across the three main product categories side by side.

Method: Descriptive Statistics Chart: Clustered Column (2 measures) Fields: category × quantity + profit
→ Next slide: Step-by-step instructions
Answer 02 · Clustered Column — Two Measures
Quantity vs. Profit by Category
Adding two Y-axis measures to one chart reveals the quantity-profit gap
1
Select chart type
Click blank canvas → Visualizations → Clustered Column Chart
2
X-axis: category
Drag categoryX-axis well. You will see three bars: Furniture · Office Supplies · Technology.
3
Y-axis: quantity (first)
Drag quantityY-axis well. Keep as Sum.
4
Y-axis: profit (second)
Drag profitY-axis well (below quantity). Now each category has two side-by-side bars.
5
Read the pattern
Office Supplies has the most units sold (~23,000) but Furniture has the lowest profit ($18K) despite high sales volume.
Why two measures on one chart?
Putting quantity and profit on the same chart lets you see if there is a mismatch — categories with many orders but low profit suggest pricing or cost problems.
Scale warning
Quantity (~23,000 units) and profit (~$145K) are on the same Y-axis, so the bars look disproportionate. For a cleaner view, drag profit to a Secondary Y-axis.
Power BI Config
Visualizations → Build Visual
X-axis
category
Y-axis (first)
Sum of quantity
Y-axis (second)
Sum of profit
Output Chart — Quantity vs. Profit by Category
160K 120K 80K 40K Sum of quantity Sum of profit Office Supplies Furniture Technology $145K profit! Only $18K Note: bars use different scales — quantity (left) and profit (right) are illustrative comparisons
$145K
Technology profit — highest by far
$18K
Furniture profit — despite 2nd highest sales
23K
Office Supplies units — most orders
Question 03 of 09

How is Superstore's order volume distributed across regions?

The operations manager is planning staffing levels for the four US regions: West, East, Central, and South. She needs to understand the proportional share of orders each region handles — not the absolute numbers, but what percentage of the total.

Method: Descriptive Statistics (composition) Chart: Pie Chart Fields: region × count of sales
→ Next slide: Step-by-step instructions
Answer 03 · Pie Chart
Order Volume Share by Region
Creating a pie chart to show proportional composition across 4 regions
1
Select Pie Chart
Visualizations pane → Pie Chart icon (looks like a pac-man circle)
2
Add the legend field
Drag regionLegend well. Four regions appear as different colours.
3
Add the value field
Drag salesValues well. Click the dropdown arrow → choose Count (not Sum). This counts orders, not dollar values.
4
Verify percentages
Hover over each slice. Power BI shows the count and percentage automatically. All four should sum to 100%.
5
Add data labels
With chart selected → Format visual (paint roller icon) → Detail labels → turn On. Set label contents to Label, percent of total.
When NOT to use a pie chart
Pie charts work best with 3–5 categories. If you had 17 subcategories, use a bar chart instead — humans can't accurately compare many thin slices.
Count vs Sum
Count of sales = number of orders (rows). Sum of sales = total dollar revenue. For staffing, order count is more relevant than revenue.
Power BI Config
Visualizations → Build Visual
Legend
region
Values
Count of sales
Details
Add data fields here
Output — Order Share by Region
West 32.05% East 29.5% Central 21.8% South 16.7% West — 3,203 orders East — 2,848 orders Central — 2,323 orders South — 1,620 orders Total: 9,994 orders West leads with 32% of all orders
32%
West — largest region
17%
South — smallest region
West has twice South's orders
Question 04 of 09

Which customer segment generates the most profit — and what is their margin?

Superstore serves three segments: Consumer, Corporate, and Home Office. The sales director wants to understand both the total profit each segment generates AND their average profit margin — to know which segment is most valuable per transaction.

Method: Descriptive Statistics Chart: Table + Donut Chart Fields: segment × profit + profit_margin
→ Next slide: Step-by-step instructions
Answer 04 · Table + Donut Chart
Profit & Margin by Customer Segment
Building a summary table then a donut chart for part-of-whole profit
1
Build the Table first
Visualizations → Table icon (grid of rows)
2
Add segment to Columns
Drag segmentColumns well (or the Rows field if using a simple table)
3
Add profit and margin
Drag profit → Values → keep as Sum. Then drag profit_margin → Values → click dropdown → Average.
4
Build the Donut Chart
Click a blank canvas area → Visualizations → Donut Chart. Drag segmentLegend. Drag profitValues (Sum).
5
Add centre label
Format visual → Detail labels → On. Enable Label contents: Percent of total. The centre hole can show a KPI total.
Insight
Home Office has the highest average margin (14%) but the lowest total profit ($60K) — because they place fewer orders. Consumer drives the most total profit ($134K) through volume.
Table Output — Segment Summary
SegmentSum of Profit% of TotalAvg Profit Margin
Consumer$134,11946.8%11%
Corporate$91,97932.1%12%
Home Office$60,29921.0%14% ←
Total$286,397100%12%
Donut Chart — Profit Share by Segment
$286K total profit Consumer $134K · 46.8% · margin 11% Corporate $92K · 32.1% · margin 12% Home Office $60K · 21.0% · margin 14% ← highest
Question 05 of 09

Is total monthly sales growing over time — and is there a seasonal pattern?

The board wants a clear picture of sales trajectory. They need to see monthly sales from January 2019 through December 2022, identify any recurring seasonal peaks, and understand whether the overall trend is improving. The raw date column currently loads as Text — you'll need to fix this first.

Method: Time Series Analysis Chart: Line Chart (monthly) Fields: order_date (bins) × median sales
→ Next slide: Step-by-step instructions (includes date fix)
Answer 05 · Line Chart — Time Series
Monthly Sales Trend 2019–2022
Fix the date data type → create monthly bins → plot a line chart
1
Fix the date type
Left sidebar → Table view (grid icon). Click order_date column header → Column tools tab → change Data type from Text → Date.
2
Create monthly bins
With order_date still selected → Column tools → Groups icon (histogram) → Name: order_date (bins) · Group type: Bin · Bin size: 1 Month → OK.
3
Select Line Chart
Back to Report view → blank canvas → Visualizations → Line Chart icon
4
Set X-axis
Drag order_date (bins)X-axis. The axis will show January 2019 … December 2022.
5
Set Y-axis as Median
Drag salesY-axis → click dropdown → select Median (not Sum). Median is more meaningful than sum for typical order size.
6
Add a secondary line
Optionally drag segmentLegend to split into three separate trend lines by segment.
Why Median not Sum?
Sum of monthly sales combines volume effects with price effects. Median shows the typical order value in each month — better for spotting price trends independently of order count growth.
Power BI Config
Visualizations → Line Chart
X-axis
order_date (bins)
Y-axis
Median of sales
Legend (optional)
segment
Output — Monthly Median Sales by Segment (2019–2022)
$80 $65 $50 $35 Q4 '19 Q4 '20 Q4 '21 Jan 2019 Jan 2020 Jan 2021 Jan 2022 Dec 2022 Consumer Corporate Overall upward trend →
Q4
Seasonal peak every year (holiday season)
Clear upward trend 2019 → 2022
~$50
Typical (median) monthly order value
Question 06 of 09

Does offering a higher discount actually destroy profit?

The finance team suspects that the aggressive discounting strategy is hurting the bottom line. They want to see every single order plotted as a point showing its discount rate against its profit — to find out whether a pattern exists and if orders with high discounts are losing money.

Method: Correlation Analysis Chart: Scatter Plot Fields: discount × profit (Don't summarize)
→ Next slide: Step-by-step instructions
Answer 06 · Scatter Plot
Discount vs. Profit — Correlation Analysis
The critical "Don't Summarize" step — and reading the negative correlation
1
Select Scatter Chart
Visualizations → Scatter Chart icon (dots scattered)
2
X-axis: discount
Drag discountX Axis. Then click dropdown next to it → "Don't summarize". This is critical.
3
Y-axis: profit
Drag profitY Axis. Again click dropdown → "Don't summarize". Now each dot = one order.
4
Colour by category (optional)
Drag categoryLegend. Dots are now coloured by Furniture / Office Supplies / Technology.
5
Size by sales (optional)
Drag salesSize. Larger dots now represent higher-value orders — showing which big orders are losing money.
6
Read the pattern
Look for the downward slope: as discount increases left → right, profit falls. Dots in the bottom-right (high discount, negative profit) are loss-making orders.
Why "Don't Summarize" is essential
Without it, Power BI aggregates all 9,994 orders into one or a few dots — the scatter becomes meaningless. Each row must appear as its own point.
Output — Scatter Plot: Discount vs. Profit per Order
$0 +$8K +$4K $0 -$3K -$5K 0% 20% 40% 60% 80% 0–30% discount: mostly profitable 50%+ discount: orders LOSING money Discount Rate (%) Profit per Order ($)
r ≈ −0.22
Negative correlation: discount ↑ → profit ↓
50%+
Discount level where most orders lose money
Rec.
Cap discounts at 30% to protect margin
Question 07 of 09

Who are the most valuable customers by total profit generated?

The customer success team needs to identify VIP customers for a retention programme. With 793 unique customers, a table is unreadable. They want a visual where the most valuable customers stand out immediately in size — without needing to sort or scroll.

Method: Descriptive Statistics Chart: Treemap (with filter) Fields: customer × sum of profit
→ Next slide: Step-by-step instructions
Answer 07 · Treemap
Top Customers by Total Profit
Using a filter to focus on customers who generate $2,000+ profit
1
Select Treemap
Visualizations → Treemap icon (nested rectangles)
2
Category field
Drag customerCategory well. Each customer gets a rectangle.
3
Values field
Drag profitValues well. Keep as Sum. Rectangle size now = total profit per customer.
4
Apply a filter
Filters pane (right panel) → Filters on this visual → find Sum of profit → change filter type to "is greater than" → type 2000 → click Apply filter.
5
Read the chart
The largest rectangle = most profitable customer. Hover over any box to see the exact profit figure and customer name.
Why use a filter?
Without filtering, 793 tiny rectangles all look the same size. Filtering to the top tier reveals the 80/20 pattern: a small number of customers generate a disproportionate share of profit.
Add colour by segment
Optionally drag segmentDetails to colour each box by whether the customer is Consumer, Corporate, or Home Office.
Output — Top Customers (Profit > $2,000)
Tamara Chand $8,981 Hunter Lopez $7,139 Sanjit Chand $5,757 Raymond B. $5,321 Adrian B. $4,965 Tom Ashbrook $4,212 Chris. M. $3,900 Keith D. $3,400 Andy R. $3,100 Harry M. $2,810 Greg T. $2,500 Pete K. Filter applied: Sum of profit > $2,000 Consumer Corporate Home Office
$8,981
Tamara Chand — top customer
Top 20
Customers account for ~28% of all profit
80/20
Classic Pareto pattern confirmed
Question 08 of 09

Which US states are the most and least profitable?

The geographic sales team wants to know where expansion efforts should focus and where losses are occurring. A table of 49 states is hard to scan. They want a map where each state is coloured by profitability — instantly showing geographic patterns, regional clusters, and any problem states.

Method: Geographical Analysis Chart: Filled Map (Choropleth) Fields: state × sum of profit
→ Next slide: Step-by-step instructions
Answer 08 · Filled Map
Profit by US State — Geographic Heatmap
Power BI auto-geocodes state names to create a choropleth map
1
Select Filled Map
Visualizations → Filled Map icon (solid map outline). Not the regular "Map" (bubble map) — choose the filled/choropleth version.
2
Location field
Drag stateLocation well. Power BI automatically geocodes US state names. A yellow warning may appear — click to confirm it should be treated as geographic data.
3
Colour saturation
Drag profitColor saturation well. Keep as Sum. States with higher profit appear darker blue; states with losses appear lighter or different.
4
Change colour scheme
Format visual → Fill colors → set Minimum color to Red and Maximum color to Dark Blue. This makes loss-making states visually obvious in red.
5
Add tooltip labels
Drag state and profitTooltips well. Hover over any state to see exact profit figures.
Key finding: Texas and Ohio
Despite high sales volumes, Texas ($–25,729) and Ohio ($–16,971) are losing money. These states appear red — indicating a pricing or discount problem in the Central region.
Output — Profit by US State (Choropleth Map)
WA OR CA $76K MT ID NV AZ WY CO UT NM ND SD NE KS OK TX -$25K MN IA MO WI IL OH -17K MI PA $34K NY $74K MA CT VA NC SC FL $30K Loss 0 Profit TX: -$25,729 OH: -$16,971 CA: +$76,381 NY: +$74,038
$76K
California — most profitable state
−$26K
Texas — biggest loss-making state
Problem
Central region: TX, OH, IL all losing money
Question 09 of 09

What is the average sale value for each combination of category and subcategory?

The pricing team wants a cross-tabulation showing the average transaction value for every category–subcategory combination. They need to see which specific product types command the highest average order value — to guide upsell strategies. A matrix (pivot table) is the right tool.

Method: Descriptive Statistics Chart: Matrix (Pivot Table) Fields: category (rows) × subcategory (columns) × avg sales
→ Next slide: Step-by-step instructions
Answer 09 · Matrix (Pivot Table)
Average Sale Value by Category × Subcategory
Building a cross-tabulation matrix and applying conditional formatting
1
Select Matrix
Visualizations → Matrix icon (grid with expandable rows — looks like a pivot table). Not the plain Table icon.
2
Rows: category
Drag categoryRows well. You see: Furniture / Office Supplies / Technology as expandable row headers.
3
Columns: subcategory
Drag subcategoryColumns well. 17 subcategory columns appear across the top.
4
Values: average sales
Drag salesValues well → click dropdown → Average. Blank cells are expected — e.g. Furniture will not have a Binders column.
5
Add conditional formatting
Click the matrix → Format visualCell elements → Values → Background color → On. Choose a white-to-red diverging scale. High values glow red.
6
Scroll columns
Use the horizontal scrollbar at the bottom of the matrix to navigate across all 17 subcategory columns.
Key insight
Copiers average $2,199 per sale — by far the highest. Fasteners average just $14. This pricing range of 150× tells you which products are worth prioritising in sales conversations.
Power BI Config
Visualizations → Matrix
Rows
category
Columns
subcategory
Values
Average of sales
Output Matrix — Average Sale Value ($) with Conditional Formatting
Category Bookcases Chairs Copiers Furnishings Phones Accessories Binders Paper Total Avg
Furniture 503.86 532.33 91.67 348.55
Office Supplies 57.13 33.56 18.92 29.41
Technology 2,198.94 215.97 456.12
Grand Total 503.86 532.33 2,198.94 91.67 215.97 57.13 33.56 18.92 278.13
How to read blank cells
Blank cells (—) are correct. They mean that subcategory does not belong to that category (e.g. Copiers are Technology, not Furniture). Power BI leaves these blank rather than showing zero.
$2,199
Copiers — highest avg sale value
$19
Paper — lowest avg sale value
115×
Range between highest and lowest subcategory