Editor's Note
Welcome to the first edition of Faster Analytics Fridays! I don’t take your time and attention for granted, so I’ll keep these editions to the point and packed with value. Today we dive into the same abstraction layer, which has been built independently at some of the worlds-leading companies.
Uber, Cloudflare, Instacart, GitLab, Lyft, Microsoft, and Contentsquare all use ClickHouse at scale. They also all built the same abstraction layer on top of it. Not similar. Identical architectural roles:
Self-service UI → Semantic layer → Query translation → ClickHouse
Why the convergence?
The conventional explanation is "ClickHouse SQL is hard." That's wrong.
The actual cause: ClickHouse's performance optimisations require schema complexity. Uber's array-based storage eliminates schema conflicts but requires understanding when fields live in dedicated columns versus array pairs. Contentsquare's AST query optimiser delivered 10x speedup on slow queries but requires modelling queries as syntax trees. Instacart's sorting keys enable partition pruning but require understanding why column order matters.
Every optimisation that makes ClickHouse fast also makes it harder to query directly.
The abstraction layer preserves performance while hiding complexity.
The numbers:
Instacart: Engineer time on fraud heuristics dropped from 80% to 20%
Microsoft: 2,500 non-engineers run 100,000 queries daily
Uber: 10,000 Kibana dashboards kept working unchanged after migration
Contentsquare: 10x speedup on slowest 5% of queries
The economics:
Without abstraction: analyst headcount drives linear engineering growth.
With abstraction: platform team absorbs complexity once, org scales without proportional headcount.
Microsoft serves 100K daily queries from 2,500 users with a single platform team. That's the math that drives convergence.
The insight:
This pattern exists because it's the only architecture that works at scale. Seven companies didn't coordinate, they arrived at the same solution because organisational economics demanded it.
The abstraction layer isn't optional sophistication. It's operational necessity.
Till next time,

