# From a six-line ticket to embedded analytics on Databricks: slides

> All 28 slides from the Dnipro Databricks User Group session on 2026-09-26, each with what it showed.

Presented by: Andrii Taran, Lead Software Engineer, TechFabric
Download: https://www.techfabric.com/blog-media/events/six-line-ticket-embedded-analytics/deck.pdf
Embed: https://www.techfabric.com/events/six-line-ticket-embedded-analytics/slides/embed
The event: https://www.techfabric.com/events/six-line-ticket-embedded-analytics
Canonical: https://www.techfabric.com/events/six-line-ticket-embedded-analytics/slides

---

### 1. From a six-line ticket to embedded analytics on Databricks

Andrii's title slide. The talk was in Ukrainian; this is his English version of the deck.

### 2. Eight steps, most of them rebuilt at least once

The eight steps the project went through. Most of them were built twice.

### 3. Six lines in the ticket, a seventh in conversation

What the customer asked for, plus the line that came up on a call afterwards: they wanted to see a row they'd written a minute ago.

### 4. "Real time" and "no impact" cannot both be true

You can't have live numbers and zero load on the app at the same time. With no data team and no ETL budget, they built the cheapest version first and measured.

### 5. Why Databricks, not a BI tool on a read replica

Why Databricks and not a BI tool on a read replica: the customer wants AI next, and Unity Catalog lets dashboards, Genie and models share one set of tables and permissions.

### 6. Step one: read the live database in place

Step one. Lakehouse Federation reads the app's Azure SQL database in place, so there was a demo within days and no pipeline to build.

### 7. Pushdown is per table, not per join

A view filtered one side of a join and not the other, so Azure SQL sent back 6.46 million rows in production to show about 800.

### 8. Measure server-side: wall clock lies by 1.5 to 2 s

Timing through the REST API adds 1.5 to 2 seconds. Read durations from query history instead.

### 9. Step two: one dataset per widget hurt the database

Step two. One dashboard fired 285 queries because every chart had its own dataset. One shared dataset per dashboard fixed it.

### 10. Four Lakeview traps that cost us a day each

Four AI/BI dashboard quirks that each cost the team a day.

### 11. Step three: pages, not dashboards

Step three. Five reports became pages on one dashboard, so switching between them doesn't reload anything.

### 12. Step four: the requirement nobody wrote down

Step four. Embedded viewers have no Databricks login, so tenant isolation lives in the dashboard SQL, keyed on a value from the embed token.

### 13. One JOIN, three ways to get zero rows silently

Three ways that one join quietly returns nothing, including case-sensitive ids.

### 14. One character took every board down

The outage. A pipe character in the tenant key blanked every dashboard for every customer.

### 15. Scope version: bust one tenant's cache only

The scope version doubles as a cache key, so changing one tenant's access doesn't clear the cache for anyone else.

### 16. Step five: materialize all or nothing

Step five. With everything in Delta a typical query took about half a second. With a Delta fact and federated lookups it was nearly four times slower.

### 17. What it bought: a full dashboard load, replayed

A full dashboard load went from about two minutes to 20 seconds.

### 18. Things we tried so you do not have to

Six things they tried that don't work, so you don't have to.

### 19. Step six: business hours as architecture

Step six. Refresh every 30 minutes during the customer's working hours, about $43 a month.

### 20. Step seven: the Refresh button Databricks lacks

Step seven. A Refresh button that actually runs the refresh job, and doesn't report success when the job was skipped.

### 21. Step eight: filtering past NOT_SUPPORTED

Step eight. Filters passed through the embed URL, after the SDK route returned NOT_SUPPORTED.

### 22. Serverless cost: the idle tail is the whole story

Most of the serverless bill was the warehouse sitting idle before it shut down.

### 23. The ownership transfer that caused an outage

Transferring ownership of a view took away access the dashboards relied on. Let a group own production.

### 24. Shipping dashboards like code

Dashboards deploy like code, with a smoke test that opens every one.

### 25. The ticket, answered honestly

The original six lines, and how well each one got answered.

### 26. Still scaffolding: the steps ahead of us

What's still to do, including Genie for customers and moving app data to Lakebase.

### 27. Six rules we would give ourselves on day one

The six rules Andrii would give himself on day one.

### 28. Thank you

Questions, and a link to the written series on the blog.

