Skip to content

The purpose of this project is to fulfill the requirements for the course INT520 Data Visualization. This project aims to showcase my skills in data modeling and report design, which are essential for effective data visualization.

Notifications You must be signed in to change notification settings

wongsakorn-s/PowerBI-NorthwindTraders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

INT520 Power BI Project - Northwind Traders

Dataset: https://www.kaggle.com/datasets/jeetahirwar/northwind-traders/data

Data ชุดเริ่มต้น มีทั้งหมด 7 ตาราง ได้แก่

  1. orders
  2. order_details
  3. customers
  4. employees
  5. products
  6. categories
  7. shippers

Data Model

  • เป็น snowflake schema และเป็น normalization
Fact Table Dimension Table
- orders - order_details
- customers
- employees
- products
- categories
- shippers

การ Clean and Transform Data

  1. Use First Row as Header มีบางตารางที่ชื่อ header ไม่ถูต้อง

  1. Merge Queries รวมตาราง employee เข้าด้วยกันเอง เพื่อสร้างคอลัมน์ managerName

  1. Sorting Row เรียงข้อมูลเป็นลำดับตามมิติที่เราต้องการ เช่น เรียงตามลำดับ emloyeeID

  1. Renaming Columns ปรับเปลี่ยนชื่อคอลัมน์ให้เป็นแบบที่เข้าใจง่าย

  1. Data Type Conversion เปลี่ยนประเภทข้อมูลในคอลัมน์ให้ถูกต้องและเหมาะสม เช่น number to text

  1. Handling Null Values ค้นหาคอลัมน์ที่มี Null Values และจัดการกับค่าเหล่านั้น

  1. Handling Date and Time จัดการกับข้อมูลวันที่และเวลาให้มีความถูกต้องและเป็นรูปแบบเดียวกัน

  1. Handling Currencies แปลงค่าตัวเลขในคอลัมน์ให้เป็นค่าเงิน เช่น เปลี่ยนเป็นค่าเงินดอลลาร์

  1. Genarate Date Table เป็นตารางที่ถูกสร้างขึ้นมาเฉพาะเพื่อเก็บข้อมูลวันที่ โดยใช้ฟังก์ชัน Power Query

  1. Change Data Category ระบุว่าคอลัมน์ "Country" และ "City" เป็นข้อมูลประเภทที่อยู่


การตั้งคำถามจาก Dataset แบ่งออกเป็นแต่ละหมวด

Overview;

  1. What is the net sales?
  2. How many orders have been processed?
  3. How many products have been sold?
  4. What is the total amount of discounts?
  5. What is the sales trend over the months?

Products;

  1. How many products are in the catalog?
  2. What are the top 10 selling products?
  3. Which category has the most purchases?
  4. How many products have been discontinued?
  5. Which category has the most discounted products?

Customers;

  1. How many customers have been attended to?
  2. In which countries are these customers located?
  3. Who are the top 5 customers by net sales?
  4. Who are the top 5 customers by products bought and orders?
  5. Which country has the most sales?

Shipping;

  1. Which shipping company is used the most?
  2. How many orders have been shipped and unshipped?
  3. How much freight was paid to the shippers?
  4. What is the on-time delivery rate?
  5. How many products were delivered on time, late, and not shipped?

Employees;

  1. How many employees work in the offices?
  2. How many managers?
  3. Who is the most active employee in terms of sales made?
  4. Which employee has handled the most orders?
  5. What are the offices’ order and sales performance?

คำสั่ง DAX Measures

  1. Net Sales = CALCULATE(SUM(order_details[net sales]), USERELATIONSHIP(orders[orderDate], 'date_table'[Date]) )
  2. Gross Sales = CALCULATE(SUM(order_details[gross sales]), USERELATIONSHIP(orders[orderDate], 'date_table'[Date]))
  3. Discounts = [Gross Sales] - [Net Sales]
  4. Freight Paid = CALCULATE(SUM(orders[freight]), USERELATIONSHIP(orders[orderDate], 'date_table'[Date]) )
  5. Products Sold = CALCULATE(COUNT(order_details[orderID]), ISBLANK(order_details[orderID]) = FALSE(), USERELATIONSHIP('date_table'[Date], orders[orderDate]) )
  6. Shipped Orders = CALCULATE(COUNT(orders[shippedDate]), USERELATIONSHIP('date_table'[Date], orders[shippedDate]) )
  7. Total Orders = CALCULATE(COUNT(orders[orderDate]), USERELATIONSHIP('date_table'[Date], orders[orderDate]) )
  8. On-time = CALCULATE(COUNT(orders[deliveryStatus]), orders[deliveryStatus] = "On-time")
  9. Not Shipped = VAR NotShippedCount = CALCULATE( COUNT(orders[orderID]), ISBLANK(orders[shippedDate]), USERELATIONSHIP(orders[shippedDate], 'date_table'[Date]) ) RETURN IF(NotShippedCount = 0, 0, NotShippedCount)
  10. On-time Delivery Rate = CALCULATE(DIVIDE([On-time], [Total Orders]) , USERELATIONSHIP(orders[shippedDate], 'date_table'[Date]))
  11. Discontinued Products = VAR DiscontinuedCount = CALCULATE( COUNT(products[discontinued]), products[discontinued] = 1, USERELATIONSHIP('date_table'[Date], orders[orderDate]) ) RETURN IF(DiscontinuedCount = 0, 0, DiscontinuedCount)

คำสั่ง DAX Column

  1. Month_EN = FORMAT(date_table[Date],"MMMM")
  2. Day of WeekMonth_EN = FORMAT(date_table[Date],"dddd")
  3. Net Sales = [UnitPrice] * [Quantity] * (1-[Discount])
  4. Gross Sales = [UnitPrice] * [Quantity]
  5. deliveryStatus = SWITCH(TRUE(), ISBLANK(orders[shippedDate]), "Not Shipped", orders[shippedDate] <= orders[requiredDate], "On-time", orders[shippedDate] > orders[requiredDate], "Late")

Data Visualization

Power BI Report

  • Overview

Untitled

  • Products

Untitled

  • Customers

Untitled

  • Shipping

Untitled

  • Employees

Untitled

About

The purpose of this project is to fulfill the requirements for the course INT520 Data Visualization. This project aims to showcase my skills in data modeling and report design, which are essential for effective data visualization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published