A simulated end-to-end analyst project for NovaMart, a multi-channel retailer operating across Nigeria and Ghana. Built to mirror real analyst work: synthetic data generation, data cleaning, SQL analysis, and a two-dashboard Power BI story.
# novamart-analysis
README (1).md
# NovaMart: Multi-Channel Retail Analytics (2021–2024)
A simulated end-to-end analyst project for **NovaMart**, a fictional multi-channel retailer operating across Nigeria and Ghana. Built to mirror real analyst work: synthetic data generation, data cleaning, SQL analysis, and a two-dashboard Power BI story — not a tutorial exercise.
## Business Context
NovaMart sells across In-Store, Online, and Marketplace channels in two markets. Leadership wants to understand where growth is coming from, whether it's sustainable, and whether the customer loyalty program is actually working. This project answers both questions using four years of order, payment, customer, and product data.
## Tools & Stack
- **Python** — synthetic data generation
- **Microsoft Excel** — initial data cleaning and validation
- **MySQL Workbench** — SQL analysis on a star schema
- **Power BI** — dashboarding and DAX measures
## Data Model
Star schema with the following tables:
| Table | Type | Purpose |
|---|---|---|
| `orders` | Fact | Order-level transactions |
| `order_items` | Fact | Line-item detail, includes outlier flags |
| `payments` | Fact | Payment method and status |
| `dim_date` | Dimension | Calendar attributes, joins on `full_date` |
| `dim_customers` | Dimension | Customer profile, loyalty tier |
| `dim_products` | Dimension | Product category, pricing |
| `dim_employees` | Dimension | Staff attribution |
| `dim_stores` | Dimension | Store location, channel, market |
**A note on outliers:** rather than deleting anomalous values in `order_items`, each was kept and tagged with `outlier_flag` and `outlier_treatment` columns. The reasoning, and the original values, stay visible — a real analyst documents judgment calls instead of erasing them.
## Workflow
1. Generate realistic synthetic transaction data with Python
2. Clean and validate in Excel (data types, duplicates, missing values)
3. Load into MySQL and build a star schema
4. Write SQL to …