Supply Chain Analytics in Tableau or Power BI
๐ Background
Test your BI skills on a real-world dataset focusing on supply chain analytics. As the main data analyst for Just In Time, you will help solve key shipment and inventory management challenges, analyze supply chain inefficiencies, and create insightful dashboards to inform business stakeholders about potential problems and propose structural business improvements.
Be creative and make use of your full skillset! Use this Workspace to prepare your data, import the tables into your local Tableau or Power BI instance, and share your insights below.
The end goal will be a (set of) interactive dashboards that demonstrate clear insights for Just In Time.
๐พ The data
Group | Column name | Dataset | Definition |
---|---|---|---|
Customer | Customer ID | orders_and_shipments.csv | Unique customer identification |
Customer | Customer Market | orders_and_shipments.csv | Geographic grouping of customer countries, with values such as Europe, LATAM, Pacific Asia, etc. |
Customer | Customer Region | orders_and_shipments.csv | Geographic grouping of customer countries, with values such as Northern Europe, Western Europe, etc. |
Customer | Customer Country | orders_and_shipments.csv | Customer's country |
Order info | Order ID | orders_and_shipments.csv | Unique Order identification. Order groups one or multiple Order Items |
Order info | Order Item ID | orders_and_shipments.csv | Unique Order Item identification. Order Item always belong to just one Order |
Order info | Order Year | orders_and_shipments.csv | Year of the order |
Order information | Order Month | orders_and_shipments.csv | Month of the order |
Order information | Order Day | orders_and_shipments.csv | Day of the order |
Order information | Order Time | orders_and_shipments.csv | Timestamp of the order in UTC |
Order information | Order Quantity | orders_and_shipments.csv | The amount of items that were ordered within a given Order Item (1 record of the data) |
Product | Product Department | orders_and_shipments.csv | Product grouping into categories such as Fitness, Golf, Pet Shop, etc. |
Product | Product Category | orders_and_shipments.csv | Product grouping into categories such as Sporting Goods, Women's Apparel, etc. |
Product | Product Name | orders_and_shipments.csv | The name of the purchased product |
Sales | Gross Sales | orders_and_shipments.csv | Revenue before discounts generated by the sales of the Order Item (1 record of the data) |
Sales | Discount % | orders_and_shipments.csv | Discount % applied on the catalog price |
Sales | Profit | orders_and_shipments.csv | Profit generated by the sales of the Order Item (1 record of data) |
Shipment information | Shipment Year | orders_and_shipments.csv | Year of the shipment |
Shipment information | Shipment Month | orders_and_shipments.csv | Month of the shipment |
Shipment information | Shipment Day | orders_and_shipments.csv | Day of the shipment |
Shipment information | Shipment Mode | orders_and_shipments.csv | Information on how the shipment has been dispatched, with values as First Class, Same Day, Second Class, etc. |
Shipment information | Shipment Days - Scheduled | orders_and_shipments.csv | Information on typical amount of days needed to dispatch the goods from the moment the order has been placed |
Warehouse | Warehouse Country | orders_and_shipments.csv | Country of the warehouse that has fulfilled this order, the only two values being Puerto Rico and USA |
Inventory & Fulfillment | Warehouse Inventory | inventory.csv | The monthly level of inventory of a product, e.g. 930 units |
Inventory & Fulfillment | Inventory cost per unit | inventory.csv | The monthly storage cost per unit of inventory, e.g. $2.07 |
Inventory & Fulfillment | Warehouse Order fulfillment (days) | fulfillment.csv | The average amount of days it takes to refill stock if inventory drops below zero |
The data can be downloaded from the sidebar on the left (under Files).
๐ช Challenge
Using either Tableau or Power BI, create an interactive dashboard to summarize your research. Things to consider:
- Use this Workspace to prepare your data (optional).
- Some ideas to get you started: visualize how shipments are delayed, by country, product, and over time. Analyze products by their supply versus demand ratio. Rank products by over or understock. Don't feel limited by these, you're encouraged to use your skills to consolidate as much information as possible.
- Create a screenshot of your (main) Tableau or Power BI dashboard, and paste that into the designated field.
- Summarize your findings in an executive summary.
import pandas as pd
data = pd.read_csv("data/orders_and_shipments.csv")
data
--Exclude Product Names that have NULL matches between Inventory table and Orders table.
SELECT i."Product Name", o."Product Name"
FROM 'data/inventory.csv' AS i
LEFT JOIN 'data/orders_and_shipments.csv' AS o
ON i."Product Name" = o."Product Name"
WHERE o."Product Name" IS NULL
GROUP BY o."Product Name", i."Product Name"
LIMIT 10;
--For each shipment_mode, determine number of days to ship from order date
SELECT "Shipment Mode", AVG("Shipment Days - Scheduled") AS avg_ship
FROM 'data/orders_and_shipments.csv'
GROUP BY "Shipment Mode"
LIMIT 10;
SELECT
"Order YearMonth",
LEFT(MAKE_DATE("Order Year", "Order Month", "Order Day"),11) AS OrderDate,
LEFT(MAKE_DATE("Shipment Year", "Shipment Month", "Shipment Day"),11) AS ShipDate,
"Customer Market",
"Customer Region",
"Customer Country",
"Customer ID",
"Order ID",
"Order Item ID" AS OrderItemId,
"Product Category",
"Product Department",
"Product Name",
"Shipment Mode",
"Warehouse Country",
"Gross Sales",
"Order Quantity",
"Profit",
"Discount %"
FROM 'data/orders_and_shipments.csv';
/* Assuming OrderDate is the DateOrderCreated and ShipDate is created after placing an Order.
With this assumption ShipDate should not be earlier than OrderDate.
Exclude Order_Item_Id where ShipDate is less than OrderDate.
Assume reasons for this happening can be due to system error, human error (typo), etc.
Total of 2735 rows excluded from data set.
*/
SELECT OrderDate, ShipDate, OrderItemId,
DATEDIFF('day', CAST(OrderDate AS DATE),
CAST(ShipDate AS DATE)) AS diff
FROM Orders
GROUP BY OrderItemId, OrderDate, ShipDate
HAVING diff < 0
ORDER BY diff
โ
Checklist before publishing
- If you use Tableau, don't forget to publish your Tableau dashboard, make it available on Tableau Public and share the link.
- If you use Power BI, upload your
.pbix
file to this Workspace through the sidebar on the left (under Files). - Remove redundant text cells like the background, data, challenge, and checklist. You can add cells if necessary.
โ๏ธ Judging criteria
CATEGORY | WEIGHTING | DETAILS |
---|---|---|
Visualizations | 35% |
|
Insights | 25% |
|
Storytelling | 25% |
|
Votes | 15% |
|
๐งพ Executive summary
In a couple of lines, write your main findings here.
๐ท Dashboard screenshot
Paste one screenshot of your Tableau or Power BI dashboard here.
๐ Upload your dashboard
For Tableau: paste the link to your Tableau Public dashboard here.
For Power BI: upload your .pbix
file to Files in the sidebar on the left.