dbt — úvod a jak začít

Praktický průvodce dbt (data build tool): co to je, proč ho používat a jak nasadit první projekt na Snowflake, BigQuery nebo Databricks.

Stručná odpověď

Co je dbt a kdy ho použít?

dbt (data build tool) je open-source framework pro transformaci dat přímo uvnitř cloudového data warehouse pomocí SQL. Píšete modely jako SELECT dotazy, dbt z nich staví závislostní graf, spouští je v pořadí a generuje dokumentaci a testy. Použijte ho vždy, když máte ELT pipeline na Snowflake, BigQuery, Redshift nebo Databricks a chcete verzovat transformace v Gitu, testovat data a vyrobit reprodukovatelný warehouse.

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í jako view nebo table.
  • 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.

  1. Instalace: pip install dbt-snowflake (nebo dbt-bigquery, dbt-databricks).
  2. Inicializace: dbt init muj_projekt — vytvoří adresářovou strukturu.
  3. Konfigurace profiles.yml s credentials (mimo Git, ideálně přes env proměnné).
  4. Definujte source v models/staging/sources.yml.
  5. Napište první staging model — SELECT * FROM {{ source('stripe','charges') }} s přejmenováním sloupců.
  6. Spusťte dbt run a dbt test.
  7. Verzujte v Gitu, nasaďte do CI (GitHub Actions s dbt build na 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 incremental materializaci 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.

Potřebujete pomoct s implementací?

Domluvte si nezávaznou 30minutovou konzultaci s našimi specialisty.

Kontaktujte nás