How do I reduce MotherDuck compute costs?
On MotherDuck the highest-return lever is keeping work local where it can run local, since hybrid execution lets you choose. After that, stop full-refreshing: switch heavy assets to a full rebuild for small tables, MERGE for larger ones so each run moves only what changed, and apply Parquet inputs and letting MotherDuck push down what it can. Bruin helps on the second and third of those, because incremental strategy is a property of the asset definition rather than something you hand-write per table. The tool licence is rarely the biggest line on the bill.
Command
bruin runDefined in
SQL + YAML
Works with
MotherDuck + Bruin CLI
What you get
How to do it
- 1
Measure first: find the MotherDuck jobs that dominate spend before changing anything.
- 2
Apply keeping work local where it can run local, since hybrid execution lets you choose.
- 3
Convert the largest full-refresh assets to a full rebuild for small tables, MERGE for larger ones.
- 4
Apply Parquet inputs and letting MotherDuck push down what it can to the tables that dominate scan volume.
- 5
Re-measure and confirm the change actually moved the bill.
How it works in code
/* @bruin
name: mart.orders
materialization:
type: table
strategy: merge
incremental_key: updated_at
@bruin */Run bruin run and Bruin moves only changed rows on MotherDuck instead of rebuilding the table.
Worth knowing
On MotherDuck, hybrid execution means you should be deliberate about which half of a query runs in the cloud Measure before and after: cost work done on intuition usually optimises the wrong job.
Other ways to do this
Bruin is not always the right answer. Here is where the alternatives are stronger.
| Option | When it is the better choice |
|---|---|
| Bruin | Practical levers for cutting compute spend on MotherDuck. |
| Native MotherDuck cost tooling | Use it. MotherDuck's own usage reporting is the right place to find out where the money actually goes before changing any tool. |
| dbt incremental models | The same incremental savings if dbt is already your transformation layer on MotherDuck. No reason to migrate for this alone. |
| A cost-observability vendor | Worth it once spend is large enough that attribution across teams is the hard part rather than the optimisation itself. |
Common questions
How do I reduce MotherDuck compute costs?
Start with keeping work local where it can run local, since hybrid execution lets you choose, then convert full refreshes to a full rebuild for small tables, MERGE for larger ones, then apply Parquet inputs and letting MotherDuck push down what it can.
Is a cheaper tool the way to cut MotherDuck costs?
Usually not. Warehouse compute is normally the largest line and the most reducible. Licence savings matter, but far less than how often you rebuild tables and how much data each query reads.
What is the cheapest stack around MotherDuck?
One with no per-seat and no per-row licence in it: open-source ingestion, open-source transformation, and your CI runner as the scheduler. That leaves warehouse compute as the only real bill.
Fewer tools, a smaller bill
Open source. No per-seat and no per-row fee, so the bill is warehouse compute.