dbt-duckdb compatibility¶
duckrun is built as a drop-in for dbt-duckdb. parity_tests/ (on GitHub)
proves it against real, unmodified type: duckdb projects: the repo is cloned fresh and not edited,
and the only thing supplied from outside is a duckrun profile via --profiles-dir (in dbt the
profile lives outside the project). The bar is a green dbt build — models, seeds, snapshots, data
tests and unit tests. When a project exposes a gap, the fix lands in duckrun, never in the project.
| project | what it exercises | dbt docs |
|---|---|---|
| jaffle_shop | the canonical reference: 3 seeds, 2 table models, 3 view models, 20 data tests | browse |
| sde (Start Data Engineering) | medallion bronze → silver → gold, a delete+insert incremental model, an SCD2 snapshot, packages, an exposure; its own EL loads CSVs into a DuckDB file read as sources |
browse |
| MRR | seeds → staging views → mart tables amortizing invoices into monthly revenue and MRR movements; native unit_tests:, singular tests, an exposure |
browse |
| TechFlow | parquet external_location sources, an incremental model, two timestamp snapshots, dbt_expectations, dbt_project_evaluator, native unit_tests:, 137 data tests |
browse |
| Tuva | 100+ healthcare models, snapshots, packages, Elementary; its integration_tests project with every vertical enabled and synthetic data from S3; 21 min on a Linux CI runner |
browse |
Every project builds green. Each docs link is the project's own dbt documentation site, generated on
duckrun by dbt docs generate --static; the runners are run_parity.py under each
tests/parity_tests/<project>/, driven by parity.yml.
TechFlow's dbt_project_evaluator hardcodes
+materialized: "{{ 'table' if target.type in ['duckdb'] else 'view' }}", and duckrun is its own
adapter type (target.type == 'duckrun'), so the package's bookkeeping models materialize as views
under duckrun. That can't be changed in duckrun, and the package still runs green.
Tuva is Linux-only because it consumes itself as a local: ../ package, which dbt symlinks on
Linux but copies recursively on Windows — a dbt/OS quirk, unrelated to the adapter.