This Power BI dashboard transforms raw coffee shop sales data into strategic insights, helping stakeholders pinpoint opportunities to enhance customer retention and drive profitability.
It’s a well-known fact that acquiring new customers is far more costly than retaining existing ones. Coffee shops, in particular, rely on loyal patrons for steady revenue, so this project delivers a Power BI dashboard that transforms raw sales data into strategic insights, helping stakeholders pinpoint opportunities to enhance customer retention and drive profitability.
A critical early phase involved developing a thorough understanding of the sales data and ensuring accurate metric calculations. We began by ingesting the Excel sales file into Power BI, creating a robust semantic layer and cleansing the data. Next, individual worksheets were crafted with targeted visuals—daily heatmaps for temporal trends, KPI cards for top-line metrics, bar and line charts for breakdowns by store and category, and decomposition trees for hierarchical analysis. These worksheets were then synthesized into a single, interactive dashboard featuring seamless cross-filtering. The final phase included rigorous validation of data accuracy, UI/UX refinements based on stakeholder feedback.
This document outlines the "Strategic Coffee Shop Sales Performance Dashboard," a Power BI-driven analytical solution designed to deliver comprehensive insights into coffee shop sales. Leveraging an Excel sales dataset, the dashboard integrates sophisticated visualizations, DAX-driven KPIs, and advanced interactive filtering. It serves as a pivotal tool for business users to explore sales trends, identify critical revenue drivers, and make strategically sound, data-backed decisions.
Data Source, Structure & Modeling Highlights:
transaction_id, date & time
– for unique records and time-series/peak-hour analysisstore_id & store_location
– to segment by outletproduct_id, category, type & detail
– for drill-downs from high-level category to specific itemunit_price & transaction_qty
– to calculate revenue and volumesInitial data profiling was conducted during development. The dashboard assumes a good standard of source data quality; however, robust error handling in DAX measures can mitigate minor inconsistencies.
Total Sales = SUM(Transactions[Sales])
Date Table = CALENDAR(MIN(Transactions[transaction_date]), MAX(Transactions[transaction_date]))
MOM Growth & Diff Sales =
VAR month_diff = [CM Sales] - [PM Sales]
VAR mom = month_diff / [PM Sales]
VAR _sign = IF(month_diff > 0, "+", "")
VAR _sign_trend = IF(month_diff > 0, "▲", "▼")
RETURN
_sign_trend
& " "
& _sign
& FORMAT(mom, "#0.0%")
& " | "
& _sign
& FORMAT(month_diff / 1000, "0.0k")
& " vs LM"
new MoM Label =
VAR month_diff = [CM Sales] - [PM Sales]
VAR mom = month_diff / [PM Sales]
VAR _sign = IF(month_diff > 0, "+", "")
VAR _sign_trend = IF(month_diff > 0, "▲", "▼")
RETURN
_sign_trend & " " & _sign & FORMAT(mom, "#0.0%")
Purpose: Provides a single control to filter all visuals by a Month–Year selector, enabling viewers to focus on any period of interest.
Month Year
(e.g., “Jun 2025”)Purpose: Granular day-by-day view of sales to spot daily patterns at a glance.
DayName = FORMAT('Date'[Date], "DDD")
WeekNumber = WEEKNUM('Date'[Date], 2)
DayNumber = FORMAT('Date'[Date], "D")
WeekdaySortKey = WEEKDAY('Date'[Date], 2)
WeekNumber
DayName
(sorted by WeekdaySortKey
)DayNumber
(for calendar grid) with conditional background by Total Sales
(gradient from low→high)Purpose: Immediate, high-level overview of critical business health metrics.
Examples: Total Sales, Total Quantity Sold, Total Orders.
Features:
CM Sales
& PM Sales
measuresPurpose: Visualize daily sales fluctuations and quickly identify days performing above or below average.
Chart Setup:
transaction_date
Total Sales
Key Features:
Daily Avg Sales =
AVERAGEX(
ALLSELECTED(Transactions[transaction_date]),
[Total Sales]
)
Colour For Bars =
IF(
[Total Sales] > [Daily Avg Sales],
"Above Average",
"Below Average"
)
Purpose: Reveal recurring sales peaks and troughs across days of the week and hours of the day for staffing and promotion planning.
Visual: Matrix Heat-Map
Key Features:
Purpose: Compare and benchmark sales across different locations.
Visual: Clustered bar chart
Label for Store Location =
SELECTEDVALUE(Transactions[store_location])
& " | "
& FORMAT([Total Sales]/1000, "$0.00k")
Purpose: Reveal top revenue drivers for stocking and marketing focus.
Visuals: Two clustered bar charts (by Product Type and by Product Category)
SELECTEDVALUE(...) & " | " & FORMAT([Total Sales]/1000, "$0.00k")
new MoM Label =
VAR diff = [CM Sales] - [PM Sales]
VAR mom = diff / [PM Sales]
RETURN IF(diff > 0, "▲ ", "▼ ") & FORMAT(mom, "#0.0%")
Purpose: Compare sales share on weekdays vs. weekends to tailor staffing and promotions.
Typical Visual: Donut chart
Key Features:
Weekday / Weekend =
IF(
'Date Table'[DayName] = "Sat" || 'Date Table'[DayName] = "Sun",
"Weekend",
"Weekday"
)
Sales consistently surge between 7 AM and 10 AM on Saturdays and Sundays, making weekend brunch the café’s single highest-volume period. This pattern suggests that targeted “brunch specials”—such as limited‐time food bundles or drink pairings—could capitalize on the existing foot traffic surge and further increase average ticket value during these critical hours.
Over the last six months, Coffee has maintained its leading share of total category revenue, followed by Tea in a distant but stable second. Together, these two categories contribute more than three‐quarters of all sales, with Bakery and Drinking Chocolate relegated to distant third and fourth. Because the Coffee vs. Tea ranking never wavers, strategic efforts (promotions, menu innovation, inventory prioritization) should focus on deeper differentiation within these two heavy‐hitting categories rather than attempting to elevate underperforming categories.
At the individual‐item level, Barista Espresso occupies the top spot, closely trailed by Brewed Chai Tea and Hot Chocolate; Gourmet Brewed Coffee rounds out the top four. The fact that these four items remain solidly in front—while the next‐ranked products sit markedly lower—confirms that classic espresso and tea offerings command the bulk of purchase decisions. Promotional calendars should therefore lean on these four best sellers (e.g., “Espresso Happy Hour” or “Chai Tea Latte Mondays”) to maximize incremental sales without diluting marketing spend across lower‐volume SKUs.
From January through May 2023, the top six products held their exact positions month over month. In June, two swaps occurred: Gourmet Brewed Coffee moved from fourth to third (overtaking Hot Chocolate), and Brewed Herbal Tea ascended from sixth to fifth (ahead of Brewed Black Tea). These June shifts—though isolated—signal that customer interest in premium/seasonal variants can quickly alter long‐standing ranking patterns. Monitoring promotional activity or seasonal menu changes around late spring may help explain these rank inversions and guide future assortment decisions.
Hell’s Kitchen has been No. 1 in sales for all six months, never relinquishing its crown despite narrowing margins against Austria and Lower Manhattan (which periodically exchanged second and third place). This enduring top‐spot performance underscores Hell’s Kitchen’s strong local loyalty. By contrast, the flux between Austria and Lower Manhattan indicates that those locations—while close in revenue—have not established the same sustained customer base. Any expansion of marketing spend or localized promotions should protect Hell’s Kitchen’s position (e.g., loyalty‐member perks) while aiming to stabilize revenue for the mid-ranked locations.
Monthly sales volumes reveal a textbook enterprise life-cycle over the January–June 2023 window:
Across every month (except February’s 28-day cycle), sales fall below average during both the first seven days and the final three days. This symmetric pattern aligns with typical pay-cycle behavior: customers exhaust budgets at month-end then reallocate spending early in the following month. To smooth revenue, strategic “first-week” promotions—such as a small discount on brewed coffee—or “last-week” incentives (e.g., buy-one-get-one on pastry items) could mitigate the mid-month bulge and prevent abrupt troughs at period boundaries.
Download the Power BI Desktop file with embedded report and model.
Get Power BI FileFor full technical documentation and implementation details, all queries, measures, and the dataset are hosted in a GitHub repository with detailed README files and inline comments:
View Repository