loader

Off the Scale: Using (& Abusing) Custom Viz in Databricks AI/BI

It started with a challenge and a competition.

“A pair of FishFlops for the first person that recreates the notorious Power BI Aquarium visualisation...” (Simon Whiteley, 2026).

I don’t want or need FishFlops. But I couldn’t resist the challenge.

The result of the challenge almost got the Custom Viz feature in Databricks AI/BI dashboards pulled from release…

So, what is Custom Viz, why should you care, and how can you create your own visuals in AI/BI dashboards?

What It Is

Custom Viz is a thin bridge between a SQL result and a Vega-Lite specification. You write a query, declare which of its columns to expose, and AI/BI hands that data to your spec as a named dataset. Whatever Vega-Lite can draw, your dashboard can now draw.

That is the entire feature. There is no proprietary chart grammar to learn — if you have written Vega-Lite, you already know how it works.

Why You Should Care

The built-in visuals are excellent but they're not suitable for everything. The standard library covers eighty per cent of what most analysts use but the last twenty per cent is where the big guns come out to play. (This is not unique to AI/BI Dashboards, every reporting tool has this limitation - which is why Vega-Lite and Custom Viz exists.) Bullet charts, control limits, domain-specific encodings, anything carrying your own brand language - the pictures a stakeholder actually remembers.

Until now, that twenty per cent meant leaving Databricks and severing the thread between the data and the picture; or going for a Databricks App (which is probably overkill for most visualisation problems). Custom Viz closes the gap and the result travels everywhere the dashboard does.

How You Build One

There are three moving parts to consider: the query, the field declarations, and the spec. 

Declare your query’s columns, write a spec that leans on inline data for decoration (if you want superfluous decoration) and, as of writing, the validator will protest that fields are missing. Ignore it. Those fields live in the spec’s own inline data, not your query, and the visual renders perfectly regardless. 

What genuinely stops it drawing is aggregation — and the trap is that it can come from two places. You either aggregate in the spec, or you don't; but if you don't, whatever aggregation the field settings apply by default will mangle a row-level visual. Unless you've handled it in the spec, set every field's aggregation to None. 

The rest is just Vega-Lite.

When I Nearly Ruined It For Everyone

I took the bait and I built the aquarium. Then I wrote it up for LinkedIn. The post went out hook, line, and sinker, with every pun the English language could be made to surrender (I am not sorry).

The response from the Databricks product team was concise.

“Don’t make us regret shipping this feature…”

They shipped a feature capable of anything, and within hours someone (me) had used it for the one thing they hoped no one would. As one Pablo Picasso said: Learn the rules like a pro, so you can break them like an artist.

Advancing Analytics builds the Databricks platforms Custom Viz sits on top of. We can do your fish too, but we would rather do your data estate as well. Let's talk. 

Ust Oldfield

Author

Ust Oldfield

Ust Oldfield, Head of Analytics at Advancing Analytics, is a data leader with 15 years’ experience helping organisations turn data into something people trust and act on. He has led enterprise-scale data strategies across sectors including luxury retail and financial services, including at Chanel where he oversaw data across five markets. His work focuses on building simple, usable platforms and governance that support real decision making. Ust is a Databricks Champion, published author and regular speaker.