webtracking.org

dbt

The standard SQL-first transformation framework — models, tests, and docs versioned in git and compiled to run inside your warehouse.

Pricing
freemium · from $100
Open source
Yes
Self-hostable
Yes

INTEGRATES: bigquery · snowflake · clickhouse · dagster · airflow · hightouch · census

dbt is where raw event data becomes something analysts can trust. Models are SELECT statements; ref() wires them into a dependency graph; dbt compiles the graph and runs it inside the warehouse, so there is no separate compute to manage. Tests (uniqueness, referential integrity, accepted values) and generated documentation live next to the SQL in git, which is the actual innovation: transformation with code review, CI, and lineage instead of a folder of saved queries.

How it models data: each model materializes as a view, a table, or an incremental table, and switching between them is a one-line config change rather than a rewrite. Incremental models are the workhorse for event data — first run builds the whole table, later runs process only new rows filtered by is_incremental() — and they are also where the real gotchas live. A unique_key with NULLs in it can fail the merge or silently produce duplicates; changing the transformation logic does not rewrite history until you force a —full-refresh; and a naive max(timestamp) filter misses late-arriving events, which tracking pipelines produce constantly. The on_schema_change config (ignore by default) decides whether new columns from an upstream schema change get picked up or quietly dropped — worth setting deliberately before the first incident, not after.

For tracking teams this is the layer where sessionization of the GA4 BigQuery export, Snowplow event modeling, and identity stitching live as versioned, tested SQL. dbt connects to warehouses through adapter plugins, split into vendor-supported “trusted” adapters and community-maintained ones — check which bucket your warehouse falls in before committing, because community adapters vary in maintenance quality.

The engine story is currently in transition. dbt Core v1 is the established Python engine, Apache-2.0 and runnable from any scheduler. The newer Rust-based dbt Fusion engine adds static SQL analysis before anything hits the database, editor feedback via LSP, and state-aware orchestration that skips unchanged models to cut warehouse spend; it powers the dbt platform, the VS Code extension, and a local CLI. A Rust-based dbt Core v2 built on the same foundation is in alpha. If you are starting fresh, plan around Fusion; if you are migrating an old Core project, verify your adapter and packages against it first. The commercial platform (formerly dbt Cloud) layers on the Studio browser IDE, the drag-and-drop Canvas, job scheduling, CI, a semantic layer for governed metric definitions, and an AI agent (dbt Wizard). dbt Labs and Fivetran announced a merger in late 2025, consolidating a large slice of the ELT-plus-transformation stack under one roof.

Use it when more than one person writes analytical SQL and you want tests, lineage, and review on it — which for event data is almost immediately. Look past it when transformations are genuinely procedural or Python-heavy, or you need cross-system orchestration, where dbt slots in under Dagster or Airflow rather than replacing them.

Visit site → Docs