mrkeyoor.com_
Sat 31 Oct 13:08 UTC
Dataevaluationupdated 25 Oct 2026

dbt review

dbt turns SQL select statements into tables and views in a data warehouse, manages relationships between models, and supports transformation testing. The repository separates Python v1 development on `1.latest` from the Rust v2 implementation on `main`. Choose the implementation before evaluating installation or migration.

+24stars / 7d
Verdict

dbt is worth evaluating for teams maintaining SQL transformation projects, but our October 4, 2026 run at commit 7bbd974 does not establish a working CLI installation, Rust compilation, or warehouse compatibility. Choose Python v1 or Rust v2 explicitly, verify the installed executable, and then check a representative project. For the experimental parser, inspect the exact package version and hook behavior rather than relying on an issue's closed status.

We ran it

Lab card: what happened when we ran dbtScreenshot of dbt (getdbt.com)
Install✓ · 20s35 packages · 37 MB
Build✓ · 3s
Testsn/ano test script
Known vulns0(pip-audit)
Repo3979 files~739,739 lines of source · 42.9 MB · 25 CI workflows

Answers from our run

Does dbt build from source?

Dependencies installed in 20 seconds (35 packages), and the build succeeded in 3 seconds. We cloned commit 7bbd974 into a clean Debian container with 3 CPUs and no project-specific setup.

Does dbt have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does dbt have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use dbt?

Readers treating our recorded setup steps as proof that a working dbt CLI was installed.

What are the alternatives to dbt?

SQLMesh, Mage. dbt is worth evaluating for teams maintaining SQL transformation projects, but our October 4, 2026 run at commit 7bbd974 does not establish a working CLI installation, Rust compilation, or warehouse compatibility.

Setup2/5The October 4 run at 7bbd974 records packaging errors despite a successful install-step status; no installed CLI check is recorded.
Docs3/5The supplied README explains branches, binary distribution, licensing, and platform support. The linked installation instructions were not supplied for assessment.
Community2/5The README documents Slack, Discourse, issues, and contribution channels. Adoption, support quality, and response times were not measured.
Maturity2/5The repository separates Python v1 and Rust v2; the supplied parser issue shows why compatibility must be checked against exact versions. Our run did not establish project compatibility.

Who it’s for

Analytics engineers maintaining shared SQL transformation projects.
Existing dbt users comparing Python v1 with Rust v2 using their own models and dependencies.
Teams willing to verify the chosen distribution, database integration, and deployment process before adoption.

Who it’s NOT for

Readers treating our recorded setup steps as proof that a working dbt CLI was installed.
Teams expecting this review to establish warehouse performance or project compatibility.
Windows on ARM users seeking support confirmed by the supplied README: its table marks that combination as not yet supported.
Python contributors expecting the v1 implementation on main; it lives on 1.latest.

Setup reality

In our recorded run on October 4, 2026, we evaluated commit 7bbd974389dbd08da3ece92396ecdd0c8f99719c, dated October 2, 2026. The sandbox configuration was 3 CPUs, 8 GB of memory, and image ghcr.io/astral-sh/uv:python3.12-bookworm. The install tail identifies Python 3.12.12.

The harness marked its install step successful after 20 seconds, but the captured output reports failed editable and wheel build preparation through setuptools. It reports multiple top-level packages in a flat layout. This record does not establish that the dbt CLI was installed. The dependency summary records 35 packages and 37 MB; it does not establish successful installation of dbt itself.

The build step returned exit 0 after approximately 3 seconds, with an empty captured tail and no command text in the supplied record. That establishes step completion, not compilation of the Rust engine. Tests were skipped with reason no script; this says what the harness selected, not whether upstream has tests. No installed-binary check or measured warehouse workload is recorded.

The pip-audit summary records zero advisories, but audit coverage is unknown. It does not establish that the dependency tree was checked or that the software is safe.

Choose the implementation before judging setup

A successful harness step is not enough to establish that dbt is ready to run your project. Our recorded setup exposes that distinction: the install summary reports success while its captured output contains packaging errors.

The underlying product serves a clear purpose. dbt turns select statements into warehouse tables and views, manages relationships between models, and supports testing those transformations. It is worth evaluating when a team needs to maintain shared SQL models.

The repository README places Python v1 development on 1.latest and the Rust v2 implementation on main. Its supplied text does not label v2 beta or state that its interfaces and disk formats may change. This review therefore makes no such claim.

What our recorded run establishes

Our run took place on October 4, 2026 at commit 7bbd974389dbd08da3ece92396ecdd0c8f99719c, dated October 2, 2026. The detector found Python and Rust and selected Python as primary. The configured sandbox had 3 CPUs and 8 GB of memory, using ghcr.io/astral-sh/uv:python3.12-bookworm; the install output identifies Python 3.12.12.

The install step lasted 20 seconds and received a successful harness status. Its captured output nevertheless reports failed editable and wheel build preparation through setuptools, including a multiple-top-level-packages error. This record does not establish that the dbt CLI was installed. It also does not establish that the documented Rust binary installation path is broken: the recorded attempt used Python packaging against this checkout.

The dependency summary records 35 packages and 37 MB. Those figures do not demonstrate successful installation of the product. The build step returned exit 0 in approximately 3 seconds, but the supplied record contains neither its command nor output proving Rust compilation. No installed-binary check is recorded.

Tests were skipped with reason no script. That is a limitation of this run, not an upstream test failure or proof that dbt lacks tests. No warehouse workload, SQL correctness check, adapter comparison, or performance benchmark is recorded.

The checkout summary records 3,979 files, 739,739 lines of source, 42.9 MB, and 25 CI workflow files. The scanner did not flag a Dockerfile, Compose configuration, or top-level tests directory. These are scanner observations for this commit, not an exhaustive inventory of supported development workflows.

The pip-audit summary records zero advisories, but audit coverage is unknown. Neither the dependency count nor the successful step status establishes how much software was inspected.

What the README promises

The README describes v2 as a self-contained binary requiring no Python runtime or dependency management. It also claims faster parsing and compilation and describes Parquet artifacts alongside continued JSON artifacts. These are project claims; our run did not verify binary installation, speed, or artifact compatibility.

Its support table lists Linux and macOS on x86-64 and ARM, plus Windows on x86-64. Windows on ARM is marked not yet supported. The README distinguishes Apache-2.0 repository source from a dbt distribution with customizations under a dbt product license. Check which source or distribution you intend to use before making licensing or deployment decisions.

Check hook behavior against the exact parser version

Issue 16310 concerns the --use-v2-parser path used with Python dbt Core. The original report names dbt 1.12.4, dbt-core-experimental-parser 2.0.1, dbt-adapters 1.24.5, and dbt-duckdb 1.11.0. Its reporter described missing start and end hooks despite a successful command exit. This was someone else's reproduction, not our test.

The issue was closed as completed on September 16, 2026, with a referenced fix. An October 15 comment subsequently reported that the fix had not reached a 2.0.x stable release, including parser 2.0.8, while a development version emitted the expected hook tags. That comment is a reported release-specific limitation, not proof that every v2 execution path has the defect. Closure alone does not establish that a particular installed package contains the fix.

For a migration trial, record the engine, parser, adapter, and package versions. Check the executable first, then compare representative models, hook execution, and any artifacts your tooling consumes. Our run leaves those checks open.

When to consider another tool

SQLMesh's README documents SQL and Python transformations, virtual data environments, and a Plan / Apply workflow for reviewing change impact. Evaluate it when those deployment controls drive your choice. We did not measure its performance or compare its compatibility with dbt.

Mage's README describes local Python, SQL, and R pipelines, connectors, scheduling, and a notebook-style interface. Evaluate it when broader pipeline authoring belongs in the same workspace. It also documents dbt support, making it a possible companion to dbt rather than a mandatory replacement.

How to read the scores

These are editorial evidence ratings, not benchmark results. On the five-point scale, 1 means substantial unresolved obstacles, 2 means partial evidence with major verification gaps, 3 means a documented evaluation path with important checks still open, 4 requires strong evidence in the relevant area, and 5 requires broad corroboration. Unknown adoption and compatibility do not earn high ratings.

Setup receives 2 because installation remains unverified. Documentation receives 3 because the supplied README explains the branch split, distribution, and platform support, while the linked installation instructions were not supplied. Community receives 2 because discussion and contribution channels are documented, but adoption and response quality were not measured. Maturity receives 2 because the implementation split and parser reports leave release-specific compatibility unresolved in this evaluation.

Alternatives

ProjectWhat it isPick it when
SQLMeshA transformation framework whose README describes SQL and Python transformations, virtual data environments, and a Plan / Apply workflow.Evaluate SQLMesh when isolated development environments and reviewing deployment impact are central requirements. These are documented capabilities, not comparisons we measured.
MageA local pipeline development environment with Python, SQL, and R in a notebook-style interface.Evaluate Mage when pipeline authoring needs database, API, or cloud-storage connectors alongside transformations and scheduling. Its README also describes running dbt models inside Mage, so it can complement dbt.

What people are saying

  1. [github-trending] dbt-labs/dbt-core

Sources

  1. dbt repository README
  2. dbt Python v1 branch
  3. dbt v2.0.3 release
  4. v2 parser hook issue 16310

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →