Skip to main content

dbt Core

Private alpha

dbt migration support is in private alpha. Contact us to request preview access.

If your transformations live in dbt Core today, you can bring them to Bauplan with only a few minor changes.

Bauplan does not run dbt projects natively, but the gap is small as they are built on the same primitives--SQL models chained into a DAG, with contracts and tests on their outputs.

Converting a project is mostly mechanical, and we provide agent skills that do it for you. You can then build, test, and publish the result with a single bauplan run command on an isolated data branch.

This page shows what a dbt project looks like after the conversion, what changes, and how to migrate yours.

Side by side

The example below has two models: titanic_passengers selects from a raw table, and survival_by_class reads from titanic_passengers.

models/titanic_passengers.sql
select
passengerid as passenger_id,
pclass as passenger_class,
survived
from raw.titanic
models/survival_by_class.sql
select
passenger_class,
count(*) as passenger_count,
avg(cast(survived as float)) as survival_rate
from {{ ref('titanic_passengers') }}
group by passenger_class
models/schema.yml
models:
- name: titanic_passengers
columns:
- name: passenger_id
data_tests:
- unique
- name: passenger_class
data_tests:
- not_null
- accepted_values:
values: [1, 2, 3]
dbt run
dbt test

What changes

dbtBauplan
Model codeSQL with Jinja ref() macrosPlain SQL, upstream models referenced by name
Contracts and testsYAML, run by dbt test as separate queriesTyped Python schemas and expectations, checked by bauplan run
Failure handlingTests run after data is materializedA failing run stays on its data branch and never reaches main