SQL Academy · Oppitunti

DBT:n (Data Build Tool) perusteet

Mallinna tietovaraston tiedot dbt:n SELECT-lausekkeina käyttäen refs- ja sources-viittauksia sekä inkrementaalisia malleja.

Oppitunti 1/414 vaihetta

DBT:n (Data Build Tool) perusteet on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mikä dbt on

dbt on ELT:n ”T”: se muuntaa tietoja tietovarastossa SELECT-lauseiden avulla. Määrittelette malleja eli SELECT-lauseita, ja dbt materialisoi ne tauluiksi tai näkymiksi, hallitsee riippuvuuksia ja suorittaa testit.

Miksi dbt

Ennen dbt:tä muunnokset sijaitsivat tilapäisissä SQL-komentosarjoissa, tallennetuissa proseduurikutsuissa tai Python-töissä. dbt tuo mukanaan:

  • Modulaarisen SQL:n koodina, versionhallittuna Gitissä
  • Riippuvuusgraafin (ref()) manuaalisen järjestyksen sijaan
  • Testit ensiluokkaisina objekteina
  • Dokumentaation luonnin

Projektin rakenne

dbt-projekti:

my_project/
  dbt_project.yml
  models/
    staging/
      stg_orders.sql
    marts/
      fct_revenue.sql
  tests/
  seeds/
  macros/

Mallitiedosto

Pelkkä SELECT .sql-tiedostossa:

-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
  id,
  user_id,
  total,
  created_at
FROM {{ source('raw', 'orders') }}

Materialisointityypit

  • view — dbt luo VIEW-näkymän; nopea päivittää, hitaampi kysellä
  • table — kokonainen taulu, joka rakennetaan uudelleen jokaisella ajokerralla
  • incremental — vain uudet rivit lisätään
  • ephemeral — sisällytetty CTE, ei tietokantaobjektia

ref() ja riippuvuudet

Viitatkaa yhteen malliin toisesta mallista:

-- models/marts/fct_revenue.sql
SELECT
  date_trunc('day', created_at) AS day,
  SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1

dbt:n suorittaminen

Rakentakaa koko projekti:

dbt run                    # build all models
dbt run --select staging   # subset
dbt run --select +fct_revenue   # this model and upstream
dbt build                   # run + test

Lähteet

Lähteet dokumentoivat raakadataa sisältävät taulut ja viittaavat niihin:

# models/sources.yml
sources:
  - name: raw
    database: warehouse
    tables:
      - name: orders

Inkrementaaliset mallit

Suuria faktatauluja varten:

{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
  WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}

Jinja-mallinnus

dbt on SQL:ää ja Jinjaa, joten SQL:ää voi tuottaa silmukoilla ja ehtolauseilla:

{% 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

Snapshotit

Hitaasti muuttuvat dimensiot tallennetaan automaattisesti:

{% snapshot user_snapshot %}
  {{ config(
    target_schema='snapshots',
    unique_key='id',
    strategy='timestamp',
    updated_at='updated_at',
  ) }}
  SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}

Dokumentaatio

Luokaa malleista ja YAML-kuvauksista automaattisesti selattava dokumentaatio:

dbt docs generate
dbt docs serve     # opens browser

Kertaus

dbt mallintaa tietojen muunnokset SQL-koodina.

  • Malli = SELECT .sql-tiedostossa
  • ref() rakentaa suunnatun asyklisen graafin
  • Materialisoinnit: view / table / incremental / ephemeral
  • Testit ja dokumentaatio ensiluokkaisina ominaisuuksina

Pikatarkistus

Mitä dbt:n {{ ref('stg_orders') }} tekee?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”DBT:n (Data Build Tool) perusteet” ilmainen?

Kyllä – oppitunnin ”DBT:n (Data Build Tool) perusteet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”DBT:n (Data Build Tool) perusteet”?

Mallinna tietovaraston tiedot dbt:n SELECT-lausekkeina käyttäen refs- ja sources-viittauksia sekä inkrementaalisia malleja. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”DBT:n (Data Build Tool) perusteet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. DBT:n (Data Build Tool) perusteet
  2. SQLFluff ja linttaus
  3. SQL:n testaaminen: dbt-testit ja Great Expectations
  4. Skeemamuutosten CI (GitHub Actions)
← Takaisin: SQL Academy