Tooling

Transformation tooling in 2026, ranked by what actually hurts

The SQL transformation layer has one incumbent, one architectural challenger and a lot of noise. A rundown organized around the pain each tool removes.

By The editors · · 4 min

Transformation tools multiply faster than the problems they solve, so this rundown is organized by pain rather than by vendor. Three pains matter: slow feedback while developing, wasted compute while running, and not knowing what a change will break.

Illustrative quadrant chart placing transformation tools by ecosystem maturity and architectural ambition

dbt remains the incumbent and the default, and defaults have earned their skepticism, but the ecosystem is real: packages, integrations, hiring pool. Fusion addresses the feedback pain directly (Rust engine, compile-time column-level lineage, the 30x parsing claim on large projects). What it does not yet change is the fundamental run-everything model that makes warehouses rich.

SQLMesh attacks the compute pain at the architecture level: virtual dev environments that preview against production data without rebuilding it, and incremental runs that compute only what changed. The comparison pieces (this one is representative) frame it fairly as ecosystem versus innovation. Migration cost is the moat protecting the incumbent, as usual.

Everything else is either warehouse-native scheduling wearing a transformation costume, or a framework whose community fits in one conference room. Fine for constrained cases; do not build a decade on one.

scoring the three pains against your own project

The rundown above is only useful if you know which pain is yours, and teams are reliably wrong about this. The diagnosis takes an afternoon. Feedback pain is measured by timing the loop an analyst actually lives: edit a model, see a correct result. Minutes of that loop, times edits per day, times the team, is a number that has justified more than one migration on its own. Compute pain is measured from the warehouse's own metering, grouped by model, with a second column for whether the model's inputs changed that day; the share of spend on unchanged inputs is your waste rate, and we have yet to see a mature project measure it below a quarter of the bill. Breakage pain is measured from the incident channel: count the messages that begin with some variant of "who changed", because each one is an afternoon of archaeology the lineage features are bidding to delete.

Run the numbers and the tool question usually answers itself. Heavy feedback pain with a big estate points at the Rust engine. A waste rate over a third points at state-aware execution, and the migration pays for itself out of the compute line. Breakage pain dominating either points at contracts and ownership before it points at any engine, because lineage tells you what broke faster but only process stops it breaking.

the migration math nobody publishes

One number decides most of these evaluations and appears in none of the marketing: the cost of moving a mature project. A thousand models with incremental logic, macros, tests and tribal conventions do not translate mechanically, and the translation tools cover the syntax, not the assumptions. Teams that have done it report the effort in engineer-quarters, not sprints. That cost is not an argument against moving; it is the denominator under every promised saving, and any pitch that omits the denominator is quoting a fraction as an integer. Price the move honestly and some migrations still clear the bar comfortably. The ones that do not were going to fail in month four, loudly, which is the most expensive way to learn arithmetic.

There is a third path the category quietly supports now: partial adoption. Run the challenger on the new domain while the incumbent keeps the estate, or adopt the incumbent's new engine project by project rather than as a big-bang cutover. The tools tolerate coexistence better than their sales teams admit, since both ultimately read and write the same warehouse. Coexistence costs you a second set of conventions and a split hiring story, which is real, but it converts an irreversible bet into a sequence of small ones, and small reversible bets are how infrastructure decisions should prefer to be made. The teams we have watched do this well time-box the experiment, name the metric it must move, and write down before starting what result would end it. The teams that do it badly call it a pilot and mean a permanent second stack.

A closing note on the noise tier, because readers keep asking about specific entrants by name. Most of them solve the feedback pain for a single warehouse, brilliantly, and nothing else; the demo is genuinely impressive and the org-wide story does not exist. If your whole estate lives on that one warehouse and your team is small, take the demo seriously. Otherwise enjoy it the way one enjoys a concept car.

verdict

Existing large dbt estate: stay, and scope the Fusion migration for the feedback and lineage wins. Greenfield with strong engineers: evaluate SQLMesh before defaulting; the compute savings are structural, not incremental. Either way, the tool matters less than the discipline nobody sells: models with owners, contracts on the public ones, and a deprecation path for the 400 nobody queries. No engine, Rust or otherwise, fixes a model graph shaped like regret.