The pipeline behind these numbers
Every KPI above comes from this single pass over the collection. In Atlas Charts each one becomes its own Number chart sharing this query. Rebuild the whole dashboard in Atlas Charts →
Booking status mix
Every booking resolves to exactly one of five outcomes. Only the green slice earns revenue.
Why bookings are cancelled
Driver-side reasons, ranked. These are the cancellations the business can actually act on.
Hourly booking volume and failure rate
Bars show booking volume against the left axis; the amber line shows the share of those bookings that failed, against the right axis. The teal bar is the busiest hour, the red bar is the worst hour.
The guard that makes the hourly chart honest
Rank the same hours by failure rate with no volume floor and 03:00 tops the table at 43.48% — on 46 bookings for the entire year. One stage repairs it.
Monthly bookings and revenue
Volume against the left axis, realised revenue against the right. Watch for months where the two lines disagree — that is a completion-rate problem, not a demand problem.
Revenue by vehicle type
Revenue first, completion rate second. The two do not rank the same way.
Payment method mix
How completed rides were paid for. Share of completed bookings.
All vehicle types
Completion rates below the fleet average of 62.29% are flagged in amber.
| Vehicle type | Bookings | Completion | Avg value | Avg km | Revenue |
|---|
Top pickup points by volume
Cancellation rates at or above 33% are flagged. Transport hubs generate the most demand and lose the most of it.
| Pickup location | Bookings | Cancelled | Cancel rate | Revenue |
|---|
Why customers cancel
Smaller in volume than driver cancellations, but more diagnostic — these are the complaints customers choose to record.
How it was built
Every figure on this page comes from an aggregation over bdma.rides. In
Lecture 14 you write those pipelines by hand; in
Lecture 15 you rebuild this view in MongoDB Atlas Charts;
in Lecture 16 you turn it into a recommendation; and in
Lecture 18 you compute the same numbers in Redis at write
time instead of read time.
node data/generate_uber_dataset.js from the repository root and you will get these
exact numbers — which means the figures quoted in the lecture notes always match what you see here.