Track · Dashboards (Tableau)
Dashboard thinking
Pick the chart, define the KPI, build it, explain it, retest. Synthetic data only.
🧠 Recall card:
📥 Synthetic datasets
Generated with a fixed seed (data/generate.py, seed 4242), so everyone gets identical numbers. 5 departments, 40 made-up items, Jul–Sep 2026.
🛠️ Project 1: Build it in Tableau Public: Inventory & Waste Dashboard
Brief: Your pharmacy manager wants one screen, checked every Monday, that answers: Where are we about to run out, where are we about to waste money, and is counting accuracy getting better? Build it in Tableau Public (free; download Tableau Public) using the four CSVs above.
- Connect all four CSVs. Decide which ones need a relationship and on which fields, and which should stay separate.
- Calculated fields: Days on Hand, Inventory Value, Below Par flag, Expiring ≤90d $, Discrepancy Rate. Write them yourself; check one row by hand.
- KPI tiles (top row): total stockouts (30d), expiring-soon $, overall discrepancy rate, number of items below par.
- Sheets: at least one bar (compare departments), one line (trend over weeks), one heatmap (dispense volume by hour × weekday).
- Interactivity: a Department filter applied to all sheets and a parameter for the expiry window (30/60/90 days).
- LOD: show each department's discrepancy rate next to the overall rate, using a FIXED expression for the overall number.
- Story: one-sentence title that states the finding, not the topic. Publish and save the link in Projects.
Acceptance criteria (self-check):
- ☐ KPI tiles match a hand calculation from the CSV (spot-check one).
- ☐ Discrepancy rate is SUM(discrepancies)/SUM(transactions), not an average of weekly rates.
- ☐ Changing the expiry parameter changes the expiring-$ tile and its chart.
- ☐ Department filter drives every sheet; the overall LOD line stays fixed.
- ☐ A manager can answer the 3 questions in under 30 seconds without you explaining.
- ☐ Written explanation (journal): what you'd act on first, and why.