Customer story · Nasma Cooling
Nasma Cooling found three weeks of silently dropped rows on day one
An upstream schema change had been dropping meter readings without a single failed run.
- silent row drops since launch
- 0
- schema changes caught in the first quarter
- 37
- of billing tables on time
- 99.6%
The problem
Nasma Cooling supplies chilled water for air conditioning to 1,900 buildings across Dubai and Abu Dhabi. Smart-meter readings arrive every 15 minutes, land in BigQuery and feed billing, forecasting and the customer app through Dagster and dbt Cloud.
Every run was green. But when a meter vendor changed the type of one field from an integer to a string, an inner join quietly stopped matching about 2% of readings. Nothing failed; the numbers were just slightly low, and they stayed that way for three weeks.
What changed
On its first day, Tessel’s volume checks flagged that one staging model had been receiving fewer rows than its learned pattern since early March. The incident traced the drop to the type change in the source, and a pull request added an explicit cast and a row-count test.
Karim Mansour, Analytics Engineer, now sees every schema change in a source before it reaches billing. In its first quarter Tessel caught 37, and freshness promises on the billing tables have held 99.6% of the time.
Stack: Dagster, dbt Cloud, BigQuery, GitHub, Slack.
The rollout
-
Day 1
Connected Dagster and BigQuery; volume drop found within hours.
-
Week 2
Cast fix and row-count test merged; billing re-run for the affected weeks.
-
Month 3
Lineage comments switched on for every pull request in the dbt Cloud project.
It found a schema change upstream that had been silently dropping rows for three weeks.
Get the same on your stack
We’ll run Tessel on a copy of your project during the demo, so you see your own incidents.