Definicja #
DBT (data build tool) to open-source'owe narzędzie stworzone przez dbt Labs (dawniej Fishtown Analytics), które pozwala transformować dane w data warehousach i data lake'ach przy użyciu SQL. DBT realizuje warstwę "Transform" w architekturze ELT (Extract, Load, Transform).
Kluczowe koncepcje DBT:
- Modele — pliki
.sqlzawierające zapytania SELECT; DBT materializuje je jako tabele lub widoki w bazie danych. Relacje między modelami definiuje się przez{{ ref('model_name') }} - DAG (Directed Acyclic Graph) — DBT automatycznie buduje graf zależności między modelami i uruchamia je we właściwej kolejności (
dbt run) - Testy — wbudowane testy danych: not_null, unique, accepted_values, relationships; własne testy w SQL lub Pythonie
- Dokumentacja — automatyczna generacja dokumentacji z opisami modeli i kolumn w
schema.yml;dbt docs generatetworzy przeglądarkę z lineage grafem - Snapshots — śledzenie zmian w danych (Slowly Changing Dimensions); historyczna wersjonalizacja tabel
- Seeds — ładowanie małych zbiorów danych z CSV do bazy
- Macros i Jinja — szablony SQL z logiką (pętle, warunki, zmienne) używając Jinja2
DBT obsługuje popularne platformy danych: Snowflake, BigQuery, Redshift, Databricks, DuckDB, PostgreSQL i inne przez adaptery.
Dwa warianty:
- dbt Core — open-source, uruchamiany lokalnie lub w CI/CD
- dbt Cloud — SaaS z interfejsem, schedulerem, historią uruchomień i integrację z Git
Zastosowania #
- Transformacje danych w data warehouse — modelowanie warstw Bronze/Silver/Gold (lub Raw/Staging/Mart) bez pisania pipeline'ów ETL w Pythonie
- Automatyczne testowanie jakości danych — not_null, unique, freshness checks jako część pipeline CI/CD
- Dokumentacja lineage danych — automatyczna mapa zależności między tabelami i modelami dla zespołu danych
- Współdzielenie logiki biznesowej — makra DBT do wielokrotnego użycia transformacji (np. standardowy model dat, walut)
- Integracja z BI narzędziami — modele DBT jako źródło dla Metabase, Looker, Tableau, Power BI
Ścieżka nauki #
DBT jest kluczową umiejętnością dla Data Engineerów i Analytics Engineerów pracujących w nowoczesnym data stacku.
Zacznij od:
- Instalacja:
pip install dbt-core dbt-postgres(lub adapter dla Snowflake/BigQuery) - Kurs oficjalny: dbt Learn (dbt Labs, bezpłatny) — fundamentals i advanced
- Inicjalizacja projektu:
dbt init, konfiguracjaprofiles.ymlz połączeniem do bazy - Pierwszy model: plik
.sqlz SELECT,dbt run, sprawdzenie tabeli w bazie - Referencje:
{{ ref() }}do budowania zależności między modelami
Następnie pogłębiaj:
- Testy danych:
schema.yml, testy not_null i unique, custom generic tests - Materialization: table, view, incremental, ephemeral — kiedy używać której
- Makra Jinja — generowanie SQL dynamicznie, pakiety dbt (dbt-utils, dbt-date)
- Snapshots SCD Type 2 — śledzenie historii zmian w danych
- Integracja z Airflow lub Prefect jako orchestratorem pipeline'ów DBT
FAQ #
- Czym jest DBT i do czego służy?
- DBT (data build tool) to narzędzie do transformacji danych w data warehousach przy użyciu SQL. Zastępuje ręczne pisanie skryptów ETL — zamiast tego piszesz modele SQL, a DBT zarządza zależnościami, testuje dane i dokumentuje pipeline. Jest kluczowym elementem modern data stack razem ze Snowflake lub BigQuery.
- Czym różni się ELT od ETL i jak pasuje tu DBT?
- ETL (Extract-Transform-Load) transformuje dane przed załadowaniem do bazy. ELT (Extract-Load-Transform) najpierw ładuje surowe dane do data warehouse, a potem je transformuje — na miejscu, korzystając z mocy obliczeniowej chmurowego magazynu danych. DBT realizuje właśnie warstwę Transform w ELT, działając bezpośrednio w bazie.
- Czy DBT wymaga znajomości Pythona?
- DBT Core jest oparty na SQL i Jinja2 — Python jest potrzebny tylko do instalacji (pip) i zaawansowanych funkcji (dbt Python models w BigQuery/Databricks od wersji 1.3). Większość codziennej pracy z DBT to pisanie SQL i YAML. Znajomość Pythona przydaje się przy pisaniu własnych testów i makr.
- DBT Core vs dbt Cloud — co wybrać?
- dbt Core to open-source — uruchamiasz lokalnie lub w CI/CD (GitHub Actions, GitLab CI). dbt Cloud to SaaS z interfejsem web, IDE, schedulerem, historią uruchomień i alertami. Dla nauki i małych projektów dbt Core wystarczy. W firmach dbt Cloud przyspiesza wdrożenie i collaboration — cena od 100 USD/miesiąc za użytkownika.