Podstawy DBT (Data Build Tool)
Modelować dane hurtowni jako instrukcje SELECT w dbt, korzystając z refs, sources i modeli przyrostowych
Podstawy DBT (Data Build Tool) to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Czym jest dbt
dbt to „T” w ELT: przekształca dane wewnątrz hurtowni za pomocą instrukcji SELECT. Definiuje się modele (instrukcje SELECT), a dbt materializuje je jako tabele lub widoki, zarządza zależnościami i uruchamia testy.
Dlaczego dbt
Przed powstaniem dbt transformacje znajdowały się w doraźnych skryptach SQL, procedurach składowanych lub zadaniach w Pythonie. dbt zapewnia:
- Modułowy kod SQL wersjonowany w Git
- Graf zależności (ref()) zamiast ręcznego ustalania kolejności
- Testy jako obiekty pierwszej klasy
- Automatyczne generowanie dokumentacji
Struktura projektu
Projekt dbt:
my_project/
dbt_project.yml
models/
staging/
stg_orders.sql
marts/
fct_revenue.sql
tests/
seeds/
macros/Plik modelu
Po prostu instrukcja SELECT w pliku .sql:
-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
id,
user_id,
total,
created_at
FROM {{ source('raw', 'orders') }}Typy materializacji
- view — dbt tworzy VIEW; szybka aktualizacja, wolniejsze zapytania
- table — pełna tabela; tworzona ponownie przy każdym uruchomieniu
- incremental — dodawane są tylko nowe wiersze
- ephemeral — wstawiany bezpośrednio CTE, bez obiektu w bazie danych
ref() i zależności
Odwołanie do jednego modelu z innego modelu:
-- models/marts/fct_revenue.sql
SELECT
date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1Uruchamianie dbt
Budowanie całego projektu:
dbt run # build all models
dbt run --select staging # subset
dbt run --select +fct_revenue # this model and upstream
dbt build # run + testŹródła
Źródła dokumentują surowe tabele i umożliwiają odwoływanie się do nich:
# models/sources.yml
sources:
- name: raw
database: warehouse
tables:
- name: ordersModele przyrostowe
W przypadku ogromnych tabel faktów:
{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}Szablony Jinja
dbt to SQL + Jinja, więc można wykonywać pętle i warunkowo generować kod SQL:
{% set tiers = ['free','pro','enterprise'] %}
SELECT user_id,
{% for t in tiers %}
COUNT(*) FILTER (WHERE tier = '{{ t }}') AS {{ t }}_count {% if not loop.last %},{% endif %}
{% endfor %}
FROM users GROUP BY user_idMigawki
Wymiary wolno zmieniające się są przechwytywane automatycznie:
{% snapshot user_snapshot %}
{{ config(
target_schema='snapshots',
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
) }}
SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}Dokumentacja
Automatyczne generowanie przeglądalnej dokumentacji na podstawie modeli i opisów YAML:
dbt docs generate
dbt docs serve # opens browserPodsumowanie
dbt traktuje transformacje danych jako kod SQL.
- Model = instrukcja SELECT w pliku .sql
- ref() tworzy DAG
- Materializacje: view / table / incremental / ephemeral
- Testy i dokumentacja jako elementy pierwszej klasy
Szybkie sprawdzenie
Co robi {{ ref('stg_orders') }} w dbt?
Często zadawane pytania
Czy lekcja „Podstawy DBT (Data Build Tool)” jest bezpłatna?
Tak — pełny tekst „Podstawy DBT (Data Build Tool)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy DBT (Data Build Tool)”?
Modelować dane hurtowni jako instrukcje SELECT w dbt, korzystając z refs, sources i modeli przyrostowych Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Podstawy DBT (Data Build Tool)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy DBT (Data Build Tool)
- SQLFluff i lintowanie
- Testowanie SQL: testy dbt, Great Expectations
- CI dla zmian schematu (GitHub Actions)