0Pricing
SQL Academy · Lekcja

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 1

Uruchamianie 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: orders

Modele 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_id

Migawki

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 browser

Podsumowanie

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

  1. Podstawy DBT (Data Build Tool)
  2. SQLFluff i lintowanie
  3. Testowanie SQL: testy dbt, Great Expectations
  4. CI dla zmian schematu (GitHub Actions)
← Powrót do SQL Academy