Medallion lakehouse on Microsoft Fabric
Replacing a failing Power BI import model with a medallion lakehouse on Microsoft Fabric, for a charge point operator scaling faster than its reporting could hold.
- Sector
- Electric vehicle charging · charge point operator
- Our role
- Architect and data engineer
Architecture
Sources
Ingest
Bronze
Silver
Gold and use
- Microsoft Fabric
- OneLake
- Delta Lake
- PySpark
- Azure Functions
- Power BI
The situation
The business was growing quickly and the reporting had not kept up. Everything ran through a single Power BI import model that pulled large files on a schedule, refreshed slowly, and had reached the point where one person understood how it held together. That is a normal place for a fast-growing company to end up, and a dangerous one: the number the business runs on depends on a model nobody else can safely change.
What we built
A full medallion lakehouse on Microsoft Fabric. Fabric Data Pipelines pull the batch sources, the charge point management system, billing and CRM, into a bronze layer in OneLake as Delta, append only, so nothing is ever lost. PySpark notebooks promote it to silver, where the real work happens: deduplicating messages, coercing the nested structures that come off the chargers into a stable schema, and applying Delta MERGE upserts so late and repeated data corrects itself rather than double counting. A curated gold layer serves a star schema that Power BI reads directly, which is what the business actually sees.
Charger telemetry, in real time
Chargers speak OCPP, and OCPP is a live conversation rather than a nightly file. Azure Functions ingest it as it arrives, so a fault on a unit surfaces in minutes instead of the next morning. That turned reporting from a rear view mirror into something the engineering team acts on the same day, which is the difference between a charger that is down and a charger that is down and nobody knows yet.
Why it held
The platform later absorbed a full migration of the underlying charge point management system with no structural rework. That is the test of an architecture: not whether it works on the day it ships, but whether it survives the change nobody told you was coming. The separation between raw, curated and served meant a new source could be swapped in underneath without touching what sat on top.
Building something like this?
Book a call