dbt is a free, open source marketing & customer engagement project written in Rust and released under Apache-2.0. It has 13,851 GitHub stars, 2,567 forks and 1,534 open issues, and was last pushed 7 hours ago. On this registry it ranks #9 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 21 stars over the last 3 tracked days.

What is dbt?

dbt is an open-source data transformation framework that lets data analysts and engineers transform their data using the same practices software engineers use to build applications, and it is aimed at analytics teams that model data inside a warehouse.

What it is

dbt lives in the ELT and business intelligence space. Analysts write select statements, which dbt calls models, and dbt handles turning those statements into tables and views in a data warehouse. Models frequently build on top of one another, and dbt makes it easy to manage the relationships between them, to visualize those relationships as a directed acyclic graph, and to assure the quality of transformations through testing. The repository carries topics for analytics, business-intelligence, data-modeling, elt, dbt-viewpoint, pypa and slack, and the project documents its viewpoint alongside the introduction. The main branch now holds the Apache 2.0 source code of dbt v2.0, a ground-up rewrite of dbt in Rust, while the v1 Python implementation of the framework continues on the 1.latest branch.

The problem dbt solves is the gap between ad hoc SQL and maintainable data models: instead of tracking by hand which query must run before which, a team expresses a model as a select statement and lets dbt resolve the ordering through model references and check the result through tests. In the v2.0 line the rewrite also replaces the Python runtime and the dependency management that the v1 implementation required, because dbt v2.0 is distributed as a single self-contained binary. Analytics artifacts shift to Parquet, which can be readily queried, joined and analyzed, while the JSON artifacts such as manifest.json continue to be produced for backwards compatibility.

Key capabilities

  • Models written as select statements, which dbt materializes as tables and views in a data warehouse.
  • Relationship management between models through references, with documentation and DAG visualization of those relationships.
  • Testing of transformations to assure their quality.
  • A Rust rewrite in dbt v2.0 that parses, compiles and runs projects in a fraction of the time of v1, especially on the largest projects.
  • A tightly defined language specification that enforces correctness at parse time.
  • Parquet artifacts that can be queried, joined and analyzed, with JSON artifacts such as manifest.json retained for backwards compatibility.
  • A single self-contained binary with no Python runtime or dependency management required, plus a revamped local documentation experience powered by the new artifacts.

Who uses it and how

  • Analytics teams where analysts and engineers work in the same project: analysts write select statements while dbt handles the warehouse objects.
  • Teams running large dbt projects, which is the scale the v2.0 parse and compile improvements target.
  • Multi-person teams that want an enhanced collaboration experience through the hosted dbt platform.
  • Practitioners who work through the dbt Community Slack and the dbt Community Discourse.
  • Developers on macOS (x86-64 and ARM), Linux (x86-64 and ARM) or Windows (x86-64), since dbt v2.0 and its drivers are compiled per operating system and architecture.

Getting started

Install dbt following the installation documentation at docs.getdbt.com/docs/local/install-dbt?version=2, then read the introduction and the viewpoint. A hosted dbt platform is also offered for teams that want a managed collaboration experience.

How it compares

No comparable or paid products are named among the facts provided for this entry, so dbt stands alone in this registry. There is no basis in the available facts for a feature, licence or cost comparison against other tools.

When to use it — and when not to

dbt v2.0 is in beta, and its behavior, APIs and on-disk formats may change before the stable release, so teams that need frozen artifact formats or stable APIs should stay on v1 or wait. Anyone who wants the v1 Python implementation must switch to the 1.latest branch, and Windows on ARM is not yet supported. Note also the licence split: the source code in the repository is Apache 2.0, but dbt itself is a distribution of that repository with dbt-specific customizations released under a dbt product license, so self-hosters should confirm which terms apply to what they deploy.

project readme (upstream, from github) — read inline

dbt logo

CI Badge

[!WARNING] dbt v1 development has moved to the 1.latest branch. The main branch now contains all the Apache 2.0 source code of dbt v2.0 — a ground-up rewrite of dbt in Rust. If you're looking for the v1 Python implementation of the dbt framework, switch to 1.latest.

dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.

architecture

About dbt v2.0

🚧 dbt v2.0 is in beta. Behavior, APIs, and on-disk formats may change before the stable release.

dbt v2.0 is engineered for performance at scale. It parses, compiles, and runs projects in a fraction of the time compared to v1. The source code in this repository is available to everyone under the standard Apache 2.0 license. dbt is a distribution of the dbt repository with dbt-specific customizations released under a dbt product license.

The big shifts from v1:

  • Faster — parse and compile times are dramatically improved, especially on the largest dbt projects.
  • Stricter — a tightly-defined language specification enforces correctness at parse time.
  • More scalable artifacts — v2.0 produces Parquet artifacts that can be easily queried, joined, and analyzed to understand your dbt project. The artifacts encompass everything in the JSON artifacts (e.g. manifest.json), which continue to be produced for backwards compatibility.
  • Easier to install — distributed as a single self-contained binary, with no Python runtime or dependency management required.
  • A completely revamped local documentation experience — dbt docs is now powered by those new artifacts and capable of scaling to large projects.

Supported operating systems and architectures

dbt v2.0 and its drivers are compiled per operating system and architecture.

Legend:

  • 🟢 — Supported today
  • 🟡 — Not yet supported
Operating system x86-64 ARM
macOS 🟢 🟢
Linux 🟢 🟢
Windows 🟢 🟡

Understanding dbt

Analysts using dbt can transform their data by simply writing select statements, while dbt handles turning these statements into tables and views in a data warehouse.

These select statements, or "models", form a dbt project. Models frequently build on top of one another – dbt makes it easy to manage relationships between models, and visualize these relationships, as well as assure the quality of your transformations through testing.

dbt dag

Getting started

Join the dbt Community

Reporting bugs and contributing code

  • Want to report a bug or request a feature? Let us know and open an issue
  • Want to help us build dbt? Check out the Contributing Guide

Code of Conduct

Everyone interacting in the dbt project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the dbt Code of Conduct.

License

The source code in this repository is licensed under the Apache License 2.0.

Frequently asked questions

Is dbt free to use?

dbt is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dbt do?

dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.

What is dbt written in?

dbt is primarily written in Rust. Its source is publicly available at https://github.com/dbt-labs/dbt, and it has 13,851 GitHub stars.