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.

Is Your dbt Run Quietly Driving Up Warehouse Compute?

The data warehouse automation solution trusted by data teams across industries

Does this sound familiar?

  • The nightly run works, and the Snowflake or BigQuery bill for it is larger every quarter without any new model being added.
  • Half the project is materialized as tables that rebuild in full because incremental logic was never written for them.
  • A small upstream change triggers a run across the whole DAG, and nobody is sure which part actually needed to run.
  • Finance asks why compute went up, and the honest answer is a list of models nobody has profiled.

dbt, now one company with Fivetran, runs every model in the warehouse. That is the right architecture. It also means that inefficiency has no error state: a model that rebuilds a year of history every night succeeds, and the cost shows up somewhere else.

Why compute creeps

  • Full rebuilds are the default. A table materialization drops and recreates on every run. Making it incremental is extra work per model, and that work is easy to postpone.
  • Incremental logic is bespoke. Unique keys, lookback windows and merge strategies are decided per model, by whoever wrote it, and across developers they drift.
  • The DAG runs wider than the change. One changed input can trigger a run across many downstream models, most of which produce the same output as yesterday.
  • Nobody profiles what works. A green run is the finish line. Compute per model is visible in the warehouse console, not in the pipeline.

None of this is a dbt fault. Hand-written transformation logic is as efficient as the person who wrote it had time to make it.

Where efficiency belongs

  • Delta loading should be the only kind. If the load pattern is generated, incremental is not a choice a developer makes under deadline. It is how every load is written.
  • History should be isolated in one place. Satellites hold change over time, so the mart layer never has to recompute history to answer a question about now.
  • Set based SQL for the engine you run. Generated code can be tuned per platform once, rather than per model by whoever wrote it.

What changes with Datavault Builder

Datavault Builder generates set based delta loads for hubs, links and satellites, tuned to the target engine, so the expensive part of the pipeline only ever touches what changed.

  • Every load is a delta by construction. New and changed rows are detected against what is already historized. Nothing is dropped and recreated.
  • History lives in satellites. As-was questions are answered from stored change, not by rebuilding the past on every run. Bi-temporal loads and point in time tables are patterns the platform offers out of the box, not something to build from macros.
  • The run scope follows the model. Dependencies are derived, so a change loads what it touches and nothing beyond it.
  • dbt State and Fusion still help if dbt stays. Datavault Builder can generate the dbt models for teams that keep operations there, and those benefit from skipped unchanged models. The generated layers underneath never needed skipping, because they were never doing the full work.
  • Compute is predictable. The load cost tracks how much the sources changed, not the total size of the warehouse, and that is a number you can watch.

What to decide

Take the ten most expensive models from the last month of warehouse query history. If most of them are staging or history models rebuilt in full, that is the generated layer waiting to exist.

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.

Three Steps to a Pipeline You Control

  1. Find the full rebuilds

    Sort models by compute per run. Table materializations of large sources are usually the top of the list.

  2. Generate the delta loads

    Hubs, links and satellites in Datavault Builder are loaded by comparing against what is already historized. Only changes move.

  3. Run the rest on top

    Marts and metrics compute from a vault that only changed where the source did.

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.

Recognized by BARC in The Data Fabric Survey 26

Meet Our Expert

Twenty minutes with our Sales Director, and an honest answer on whether this fits your stack.

Matt Collett

Matt Collett

Sales Director

What are you looking for?

By submitting you agree to our Privacy Policy.

Other Problems This Series Covers

  • The dbt trade-off

    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.

  • Ingestion gap

    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.

  • Model sprawl

    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