Co je dbt
dbt (data build tool) je open-source nástroj pro transformační vrstvu moderní ELT architektury. Místo ETL serveru píšete transformace přímo v SQL a dbt je v cílovém datovém skladu spouští, řadí podle závislostí a verzuje v Gitu.
Vznikl ve Fishtown Analytics (dnes dbt Labs) a stal se de-facto standardem pro data warehousing v cloudu — Snowflake, BigQuery, Databricks, Redshift, Postgres a další.
Proč dbt používat
dbt řeší typické problémy SQL pipeline psaných ručně:
- Verzování — všechny transformace v Gitu, code review, CI/CD.
- Modularita — model se referencuje přes
ref(), dbt si sám vytvoří DAG. - Testy — vestavěné testy unikátnosti, not-null, vztahů, freshness.
- Dokumentace — z YAML metadat se generuje statický web s lineage.
- Reuse — Jinja makra a balíčky (dbt-utils, dbt-expectations).
Jak dbt funguje
Workflow je jednoduchý: zdrojová data jsou už nahraná ve warehouse (přes Fivetran, Airbyte nebo vlastní data pipeline). Vy v dbt projektu definujete:
- Sources — odkaz na raw tabulky (například
raw.stripe.charges). - Models — SQL soubory v
models/, každý je jeden SELECT, který dbt zhmotní jakoviewnebotable. - Tests & docs — YAML soubory popisující sloupce, testy a dokumentaci.
Příkaz dbt run přeloží Jinja, vyřeší závislosti a spustí materializace ve správném pořadí. dbt test ověří data, dbt docs vygeneruje dokumentaci.
dbt Core vs dbt Cloud
dbt Core je zdarma, open-source CLI nástroj. Spouštíte ho v Airflow, GitHub Actions nebo na vlastní VM. Plná kontrola, ale orchestraci si řešíte sami.
dbt Cloud je placená SaaS služba: IDE v prohlížeči, orchestrator, CI, hosting docs, alerting. Vhodné pro týmy bez vlastního DevOps zázemí. Cena startuje na ~100 USD/měsíc za developera.
Pro většinu zákazníků v ČR doporučujeme dbt Core + GitHub Actions nebo Airflow — nižší TCO a žádný vendor lock-in.
První projekt krok za krokem
Předpoklady: přístup do warehouse (Snowflake nebo BigQuery), Python 3.9+, Git.
- Instalace:
pip install dbt-snowflake(nebodbt-bigquery,dbt-databricks). - Inicializace:
dbt init muj_projekt— vytvoří adresářovou strukturu. - Konfigurace
profiles.ymls credentials (mimo Git, ideálně přes env proměnné). - Definujte source v
models/staging/sources.yml. - Napište první staging model —
SELECT * FROM {{ source('stripe','charges') }}s přejmenováním sloupců. - Spusťte
dbt runadbt test. - Verzujte v Gitu, nasaďte do CI (GitHub Actions s
dbt buildna PR).
Doporučená vrstvení: staging (přejmenování, typování) → intermediate (joiny, byznys logika) → marts (fact a dimenzionální tabulky pro BI).
Testy a dokumentace
dbt nabízí 4 vestavěné testy: unique, not_null, accepted_values, relationships. Pro pokročilejší pravidla použijte balíček dbt-expectations (rozsahy hodnot, regex, statistické testy).
Dokumentace se generuje z YAML popisů a Jinja maker. dbt docs generate && dbt docs serve vyrobí statický web s lineage grafem — zásadní pro data governance a onboarding nových analytiků.
Best practices
- Striktně oddělujte staging, intermediate a marts vrstvu.
- V marts používejte star schema — viz Star vs Snowflake schema.
- Každý model má alespoň 1 test (typicky unique na primary key).
- Používejte
incrementalmaterializaci pro velké fact tabulky. - Nasaďte CI s
dbt build --select state:modified+— testuje jen změněné modely a downstream. - Sledujte freshness sources a nastavte alerty (Slack, email).
- Pro orchestraci spojte s Airflow nebo Dagsterem.
Často kladené otázky o dbt
Potřebuji znát Python, abych mohl dbt používat?
Ne. dbt se píše čistě v SQL s drobnou Jinja syntaxí. Python je třeba jen pro vlastní makra nebo pro Python modely (dbt 1.3+) na Snowflake a Databricks.
Funguje dbt s Postgresem nebo MySQL?
S Postgresem ano (adapter dbt-postgres). MySQL má komunitní adapter, ale dbt cílí primárně na sloupcové cloudové sklady (Snowflake, BigQuery, Redshift, Databricks).
Kolik stojí dbt Core?
dbt Core je zdarma (Apache 2.0). Platíte jen compute v cílovém warehouse. dbt Cloud začíná na cca 100 USD/měsíc za developer seat.
Jak dlouho trvá nasazení prvního dbt projektu?
Jednoduchý pilot s 10–20 modely zvládneme za 2–4 týdny včetně CI/CD. Plný greenfield warehouse s 100+ modely typicky 2–3 měsíce.
Můžu používat dbt bez data engineera?
Ano, dbt je navržen pro analytics engineery — datové analytiky se SQL znalostmi. Pro produkční provoz ale doporučujeme alespoň občasnou pomoc data engineera s CI/CD a orchestrací.
Jaký je rozdíl mezi dbt a Airflow?
dbt transformuje data uvnitř warehouse (SQL). Airflow je obecný orchestrator workflow — typicky Airflow spouští dbt run jako jeden z kroků pipeline. Více v guide Airflow vs Dagster.