JB Analytica reference architecture — a published example. The business and every figure on it are invented.

Cancellations

Every figure here is the gap between two columns on fct_orders: net_amount_eur, the order as placed, and realised_net_amount_eur, which is zero when the order was cancelled. Neither is a filter somebody has to remember to apply, which is the point — see dbt/models/marts/_marts__models.yml.

Cancellation rate

5.00%

Cancelled orders

200

Revenue lost

€17,203

Share of booked revenue

4.96%

The order rate and the revenue share are close but not identical, and the difference is the useful part: when they diverge, cancellations are landing on orders that are bigger or smaller than average.

Over time

Loading...
Loading...

The rate wanders between about 3% and 6.5% with no trend, while the lost amount tracks total revenue — cancellations scale with volume here rather than clustering in a bad month. Both are properties of how the synthetic data is generated: cancellation is drawn independently per order, so the month-to-month movement is sampling noise on roughly 330 orders a month, not a signal. Worth knowing before trusting a dashboard built only against this stack — nothing here has been tested against a real spike.

Where they happen

Loading...
No Results

Which products

No Results

Read this one carefully: a product high on this list is not necessarily a problem product. Lost revenue is mostly a function of how much the product sells, so the list largely re-ranks the best sellers. The column worth acting on would be lost revenue as a share of that product's own booked total — which this synthetic data has no signal in, because cancellation is generated independently of which product is on the order.

This is a reference project by JB Analytica, a data architecture and analytics engineering consultancy in Belgium. It is not a client engagement: the coffee webshop does not exist, and the customers, orders and revenue shown here are generated data. Every line of it is published.

jbanalytica.com Book a scoping call Source on GitHub