Skip to content
PythondbtDuckDBStreamlit

Olist E-Commerce Analytics Engineering

Analytics engineering on a real 99,441-order e-commerce dataset: a dbt star schema on DuckDB, 34 automated data tests, and a self-serve Streamlit dashboard.

Illustration for the Olist e-commerce analytics engineering project, showing a dbt star schema on DuckDB with a Streamlit dashboard

Problem

A real 99,441-order e-commerce dataset arrives as flat, disconnected exports that analysts can't query efficiently or trust.

Solution

A dbt star schema on DuckDB with 34 automated tests, exposed through a self-serve Streamlit dashboard for non-technical stakeholders.

Overview

Real e-commerce data is messy: 99,441 real orders from the Olist dataset, spread across normalized tables that aren’t built for fast analytical queries.

How it works

The raw tables are modeled into a proper dbt star schema on DuckDB — a central fact table of orders surrounded by customer, product, seller and time dimensions — with 34 automated tests verifying the model at every layer. A self-serve Streamlit dashboard sits on top so a non-technical stakeholder can explore sales, delivery performance and customer behavior without writing SQL.

Result

A real, messy dataset turned into a trustworthy, query-fast analytical model with a usable interface on top — the full analytics-engineering loop, not just a script.

Further reading

See From Notebook to Data Product and dbt + DuckDB vs a Cloud Warehouse for more on why this stack was chosen and why the Streamlit dashboard matters.

More projects