E-commerce Sales
Dashboard
POWER BIDAXDATA MODELLINGETL

This project builds an end-to-end Power BI dashboard from a public e-commerce sales dataset. Starting from a raw CSV, the workflow covers data import and quality checks, designing a star-schema data model, creating a calculated date table in DAX to enable time-based interactivity, and finally building a two-page interactive dashboard for revenue, product, region, and customer analysis.

Highlights
01 — Dashboard: Sales Overview

The headline of the project is a two-page interactive dashboard. The first page gives a high-level view of business performance: KPI cards for total revenue, orders, average customer rating, and average delivery days, followed by revenue broken down by month, product category, region, and payment method — all filterable by region, category, and date.

Screenshot 1⤢ expand
Electronics leads revenue by product category, and Card payments account for roughly 45% of orders — the two clearest commercial signals on the page.
02 — Dashboard: Customer & Delivery Insights

The second page digs into relationships: monthly revenue against average discount, monthly revenue against average customer rating, and how customer rating varies with delivery days — helping connect operational metrics to customer satisfaction.

Screenshot 2⤢ expand
Pairing revenue with discount and rating on the same timeline makes it easy to spot months where heavier discounting did — or did not — move satisfaction and sales.
03 — Data Import & Quality

Behind the dashboard, the workflow starts from a public e-commerce dataset in CSV format. It was imported into Power BI through Power Query, where each column's data type was validated and the data was checked for blanks, duplicates, and inconsistent categories before modelling.

Clean, correctly-typed columns at this stage are what make the downstream model and DAX measures reliable.
04 — Data Model (Star Schema)

The data was structured into a star schema: a central FactSales table holding the measures (revenue, quantity, discount, ratings, delivery days) surrounded by four dimension tables — DimCustomer, DimProduct, DimRegion, and DimDate — each joined on a one-to-many relationship.

Screenshot 3⤢ expand
A star schema keeps relationships simple and filters flowing in one direction, which makes measures faster and the model easier to extend.
05 — Calculated Date Table (DAX)

To enable time-based analysis and consistent month/year slicing, a dedicated DimDate table was generated with DAX. CALENDAR builds a continuous date range from the earliest to latest order date, and ADDCOLUMNS derives Year, Month, Month Number, and a sortable Year-Month key.

dax
DimDate =
ADDCOLUMNS(
    CALENDAR(
        MIN(FactSales[order_date]),
        MAX(FactSales[order_date])
    ),
    "Year", YEAR([Date]),
    "Month Number", MONTH([Date]),
    "Month", FORMAT([Date], "MMMM"),
    "Year Month", FORMAT([Date], "YYYY-MM")
)
Screenshot 4⤢ expand
This calculated table is what powers every time-based visual and the month slicers — without it, sorting months chronologically and comparing periods would not work cleanly.