dataco-supply-chain-delay-prediction / PowerBI_Design_Guide.md
yash441alt's picture
Upload PowerBI_Design_Guide.md with huggingface_hub
c6b196e verified
|
Raw
History Blame Contribute Delete
4.73 kB
# Power BI Dashboard Design Guide - Supply Chain Delay Analysis
This guide provides instructions and structural layouts to build an interactive, professional dashboard in Power BI using the populated MySQL database (`supply_chain_db`).
---
## 1. Data Connection & Model Schema
### Connecting Power BI to MySQL
1. Open **Power BI Desktop**.
2. Click **Get Data** > **MySQL database**.
3. Set **Server** to `localhost:3306` and **Database** to `supply_chain_db`.
4. In the credentials prompt, use the Database tab and input:
- **Username**: `root`
- **Password**: `admin123`
5. Select all tables: `departments`, `categories`, `customers`, `products`, `orders`, and `order_items`. Click **Load**.
### Data Modeling Relationships (Star/Snowflake Schema)
Ensure Power BI sets up the correct schema relationships under the **Model View**:
- `customers` (customer_id) `1 ---- *` `orders` (order_customer_id)
- `orders` (order_id) `1 ---- *` `order_items` (order_id)
- `products` (product_card_id) `1 ---- *` `order_items` (order_item_cardprod_id)
- `categories` (category_id) `1 ---- *` `products` (product_category_id)
- `departments` (department_id) `1 ---- *` `products` (No direct relationship; create link if needed or link through custom schemas. Otherwise, `departments` can be linked to `products` via category if category stores department, or directly as normalized in schema.)
---
## 2. Calculated Measures (DAX Formulas)
Create a new table `_Measures` and write the following DAX calculations:
1. **Total Orders**:
```dax
Total Orders = COUNT(orders[order_id])
```
2. **Total Sales (Gross)**:
```dax
Total Sales = SUM(order_items[sales])
```
3. **Total Profit**:
```dax
Total Profit = SUM(order_items[benefit_per_order])
```
4. **Delayed Orders**:
```dax
Delayed Orders = CALCULATE([Total Orders], orders[late_delivery_risk] = 1)
```
5. **Late Delivery Rate**:
```dax
Late Delivery Rate = DIVIDE([Delayed Orders], [Total Orders], 0)
```
6. **Average Shipping Delay (Actual vs Scheduled)**:
```dax
Avg Actual Days = AVERAGE(orders[days_for_shipping_real])
```
```dax
Avg Scheduled Days = AVERAGE(orders[days_for_shipping_scheduled])
```
---
## 3. Dashboard Layout & Visualization Pages
To ensure a premium design, use a **Dark Slate Theme** (Background: `#1A1D24`, Cards: `#252932`, Accents: Teal `#00B4D8` for on-time, Coral/Red `#FF5C5C` for delays, and Gold/Yellow `#F2C94C` for warnings).
### Page 1: Executive Logistics Overview
*Purpose: High-level dashboard for logistics managers.*
* **Top KPI Cards** (3-4 columns):
* Total Sales (Format: `$0.0M`)
* Total Profit (Format: `$0.0M`)
* Total Orders (Format: `0.0K`)
* **Late Delivery Rate** (Format: `0.0%` with conditional text color: Red if >50%, Green if <10%)
* **Main Visual (Left)**: Map or Filled Map
* Location: `orders[order_country]`
* Bubble Size: `[Total Orders]`
* Color Saturation: `[Late Delivery Rate]` (diverging from light teal to deep red)
* **Main Visual (Right)**: Donut Chart
* Legend: `orders[shipping_mode]`
* Values: `[Total Orders]`
* **Trend Visual (Bottom)**: Area Chart
* Axis: `orders[order_date]` (grouped by Month)
* Values: `[Late Delivery Rate]` and `[Avg Actual Days]`
### Page 2: Supply Chain Delay Bottlenecks
*Purpose: Deep-dive into delayed areas and bottlenecks.*
* **Slicers (Top Ribbon)**: Market, Customer Segment, Shipping Mode
* **Horizontal Bar Chart**: Delay Rate by Region
* Y-Axis: `orders[order_region]`
* X-Axis: `[Late Delivery Rate]`
* **Column Tree/Matrix Visual**: Delay Rate by Department & Category
* Rows: `departments[department_name]`, `categories[category_name]`
* Columns: `[Total Orders]`, `[Delayed Orders]`, `[Late Delivery Rate]`
* **Scatter Plot**: Sales vs Profit Loss by Country
* X-Axis: `[Total Sales]`
* Y-Axis: `[Late Delivery Rate]`
* Details: `orders[order_country]`
### Page 3: Financial Risk & ML Insights
*Purpose: Analyzing the business cost of delays and predictions.*
* **KPI Cards**:
* **Profit Lost on Late Deliveries**:
```dax
Profit Lost = CALCULATE([Total Profit], orders[delivery_status] = "Late delivery")
```
* **Bar Chart**: Sales & Profits by Delivery Status
* X-Axis: `orders[delivery_status]`
* Y-Axis: `[Total Sales]` and `[Total Profit]` side-by-side
* **Python Prediction Integration**:
* You can load the test predictions or use a Python Script inside Power Query Editor to run the saved model `best_xgb_model.pkl` on new orders, adding a `Predicted_Delay_Risk` column to flag future high-risk orders.