The dbt Trade-Off: Code Sprawl, Hidden TCO, and the Case for Automated Modeling
dbt brought software engineering to SQL, and teams are right to want that. The trade is a transformation layer that grows in code, in cost and in compute, on top of an ingestion tool that is still a separate product. A generated Data Vault takes that whole layer off the code base. It does not need dbt, but it can be combined with it.
dbt, now one company with Fivetran, earned its place. Git, tests, modular SQL and a shared vocabulary for transformation were missing from analytics engineering, and dbt supplied them. The trade it asks for shows up later, in four places that each have their own article in this series.
The dual cost model
Teams on dbt face a split. dbt Core is free to run and leaves execution, scheduling, CI and infrastructure to the team, so the cost is platform engineering time. dbt Cloud supplies the scheduler, IDE, orchestration and semantic layer, priced per developer seat plus usage, so the cost is a subscription that grows with the team and the run frequency. Either path costs. One in subscriptions, the other in salaries. The detail is in the article on Core versus Cloud.
The architectural wall
- Sprawl.
ref()makes a new model a one line decision, and projects grow into hundreds of loosely governed files. Changing a business key upstream means finding everything that inherited it. See the article on model sprawl. - Compute. Everything runs in the warehouse, and a full rebuild where a delta would do succeeds silently and shows up as credits. Incremental logic is optional and per model. dbt State now skips unchanged models; it does not change what a model does when it runs. See the article on warehouse compute.
- The ingestion gap. dbt is transformation only. Landing the data is a second product with a second bill and a second schema, even now that it is the same vendor. See the article on the ingestion gap.
Freedom versus standardization
There is a fifth difference that is not a pain point but a design choice. dbt is open, and that is a genuine advantage: any pattern, any package, any convention the team prefers. It is also where the cost comes from, because every one of those choices is yours to build, test and keep current. Openness without a standard means no two dbt projects look alike: every one is a one-off that only its authors can maintain, and every new hire learns it from scratch. And a code driven project is shaped by technical detail, table by table and macro by macro, not by what the business needs to see. Datavault Builder is standardized and model-driven: fewer choices, lower development and maintenance cost, and a model that business users can read and take part in, because it describes their concepts rather than the code.
All four share one cause. Most of a dbt project is structural: staging, keys, deduplication, history. To be fair, dbt has patterns for this, macros and packages that encode the standard. But every developer can edit or fork them, and changing a shared pattern properly means regression tests and migration scripts for everything built on it. So when a pattern does not quite fit, a second version of it appears, and the project ends up with several versions of the same structure. The custom business logic is the smaller part, and it can live in the model or, if you prefer, in dbt.
What automated modeling changes
Datavault Builder holds the structure in a visual model and generates the staging, raw vault and business vault layers from it, together with ingestion, orchestration, deployment and lineage, in one platform.
- The structural share leaves the code base. Hubs, links, satellites and their delta loads are generated, tuned to the target engine, and regenerated when the model changes.
- Ingestion is in the same tool. Batch, delta and CDC from databases, files, REST APIs, NoSQL and Python sources, with streams such as Kafka arriving as micro batches. No handoff.
- Compute follows the change. Every generated load is a delta by construction, so the nightly cost tracks how much the sources moved.
- The patterns keep up with the database automatically. When Snowflake, Databricks or BigQuery ship a new feature, the updated load patterns and the migration scripts for existing structures are part of the product. In dbt that is a macro update, a test run, a migration script per structure and another test run, all yours. Over years, that is where most of the maintenance cost sits.
- The cost is predictable. A server license in one of three sizes plus developers, and nothing metered per run or per load. No orchestration stack to run for the generated layers.
- The delivery layer is model-driven too. Marts and data products are assembled by drag and drop on the semantic layer, and business rules are managed and versioned in the platform, so business oriented people decide which data they need.
- Migrating an AutomateDV project is metadata driven. The Migration Vault is a data model of hubs, links, satellites, sources, business keys and attributes. Map what the dbt project already declares into it, and the deployment package is generated from that mapping. The same route works for nearly anything with structure to describe, including a 3NF warehouse.
- dbt is optional, not removed. If operations stay in dbt, Datavault Builder generates the dbt models from the same model. The process stays model-driven, and the models are updated by regeneration, which is a much simpler way than editing them by hand.
Where to start
Audit the project and sort each model by what it does: stages, keys, historizes, or computes. The first three are the structural share. That share, plus the ingestion product in front of it, is what a generated warehouse replaces. What is left is either no dbt project at all, or one that is generated from the model and never edited by hand.
See It Running on One of Your Sources
Book a free demo and bring the connector that costs you the most, in money or in time.
How Datavault Builder Takes the Friction Out of Ingestion
-
Ingestion is built in
Batch, delta and CDC loads from databases, files, REST APIs, NoSQL and Python sources, with streams such as Kafka arriving as micro-batches. Same platform that generates the warehouse, no second invoice.
-
Your schema, not the vendor's
Source tables are mapped to a Data Vault 2.0 model you designed. A new column or a renamed table changes a mapping, not a chain of post-load scripts.
-
Only deltas move
Hubs, links and satellites load what changed. Full reloads stay in staging instead of being reprocessed downstream every night.
-
History is kept by design
Every change is retained as it arrives, so as-was reporting works even where the source overwrites its own rows.
-
Code you never hand-write
Loading, historization and lineage are generated from the model in real time and run natively on Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle or PostgreSQL.
-
One platform, up to nine tools fewer
Modeling, ETL, CI/CD, documentation and lineage in one place. That is what makes 14.7 minutes from requirement to production possible.
Meet Our Expert
Twenty minutes with our Sales Director, and an honest answer on whether this fits your stack.
Matt Collett
Sales Director
Great, pick a time that works for you:
Other Problems This Series Covers
-
Does dbt Still Leave You to Land the Data Yourself?
dbt is a transformation tool by design. It assumes the raw data is already in the warehouse, so the landing step is a second product with a second bill, even now that Fivetran and dbt Labs are one company. A warehouse platform that ingests and models in one place closes the gap without a second contract.
-
Is Your dbt Run Quietly Driving Up Warehouse Compute?
dbt executes everything in the warehouse, so a full refresh where an incremental would do, or a table materialization that rebuilds every night, shows up as credits, not as an error. Incremental logic is optional in dbt. In a generated Data Vault it is the only way loads are written.
-
Does Your dbt Project Have More Models Than Anyone Can Explain?
ref() makes a new model a one line decision, and a project of hundreds of loosely governed SQL files is the result. Changing a business key upstream then means finding every model that inherited it. The fix is not more tests. It is a model that generates the structure instead of accumulating it.
Questions and Answers
- No. It is an argument that most of a dbt project is structural code that a generator should own. Datavault Builder can replace dbt outright, with a drag and drop delivery layer, versioned business rules and data products. If dbt stays because it runs other things too, the platform generates the dbt models, so the process is model-driven either way.
- AutomateDV generates vault SQL from macros you configure per model, and it is the right idea. Staging, macro metadata, load order and history handling remain yours to write and keep in sync. Datavault Builder derives all of that from one visual model, and the model is also the documentation.
- Through the Migration Vault. It is a concept and a data model: hubs, links, satellites, sources, business keys and attributes. You extract the metadata your project has, map it into that model, and Datavault Builder generates a deployment package to install; repeat as the project moves. An AutomateDV project already holds all of that metadata, and the same route works for nearly anything that has structure and rules to describe.
- One company since 2026-06-01, two products with separate pricing today, with tighter integration announced for later. dbt Core and the Fusion engine remain open source under Apache 2.0.