Konfiguracja projektu dbt i ładowanie danych

Studium przypadku: budowanie modeli danych e-commerce z dbt

Susan Sun

Freelance Data Scientist

Powtórzenie: konfiguracja i inicjalizacja dbt

Instalacja dbt

pip install dbt

Inicjalizacja projektu dbt looker_ecommerce

dbt init looker_ecommerce

Weryfikacja poprawności konfiguracji

cd looker_ecommerce
dbt debug

Struktura katalogów wygenerowana przez dbt:

Powtórzenie zrzutu ekranu z poprzedniej lekcji. Zawiera serię katalogów wygenerowanych automatycznie przez dbt init. Folder najwyższego poziomu nosi nazwę looker e-commerce. Podfoldery to: analyses, macros, models, seeds, snapshots i tests. Znajdują się też trzy pliki: gitignore, dbt project yaml oraz readme markdown.

Studium przypadku: budowanie modeli danych e-commerce z dbt

Zapoznanie z danymi: centra dystrybucji

  • distribution_centers.csv jest mały i statyczny – zawiera tylko 10 wierszy

  • Próbka surowego pliku danych distribution_centers.csv

Podgląd pliku danych centrum dystrybucji zawierającego trzy wiersze danych i 4 kolumny. Nazwy kolumn to: id, name, latitude i longitude.

  • id: Unikalny identyfikator centrum dystrybucji
  • name: Nazwa centrum dystrybucji
  • latitude: Szerokość geograficzna centrum dystrybucji
  • longitude: Długość geograficzna centrum dystrybucji
Studium przypadku: budowanie modeli danych e-commerce z dbt

Zapoznanie z danymi: zamówienia

orders.csv jest duży i stale aktualizowany – zawiera 125 000 wierszy i 9 kolumn

  • order_id: Unikalny identyfikator zamówienia
  • user_id: Identyfikator użytkownika, który złożył zamówienie
  • status: Status zamówienia
  • gender: Płeć użytkownika
  • created_at: Znacznik czasu utworzenia zamówienia
  • returned_at: Znacznik czasu zwrotu zamówienia
  • shipped_at: Znacznik czasu wysyłki zamówienia
  • delivered_at: Znacznik czasu dostarczenia zamówienia
  • num_of_items: Liczba pozycji w zamówieniu
Studium przypadku: budowanie modeli danych e-commerce z dbt

Zapoznanie z danymi: zamówienia

Próbka surowego pliku danych orders.csv:

Podgląd pliku danych zamówień zawierającego dwa wiersze danych i 9 kolumn. Nazwy kolumn to: order id, user id, status, gender, created at, returned at, shipped at, delivered at i num of items.

Studium przypadku: budowanie modeli danych e-commerce z dbt

Konfiguracja surowych źródeł i źródeł danych seed

Centrum dystrybucji – plik danych surowych:

  • Charakterystyka danych:
    • Mały, płaski plik (csv)
    • Wolno zmieniające się dane

Zamówienia – plik danych surowych:

  • Charakterystyka danych:
    • Duży zbiór danych
    • Szybko zmieniające się dane
  • Metoda ładowania dbt:
    • dbt seed
    • Ładowanie jako jednorazowy plik
  • Metoda ładowania dbt:
    • dbt source
    • Łącznik do DuckDB
Studium przypadku: budowanie modeli danych e-commerce z dbt

Konfiguracja surowych źródeł i źródeł danych seed

dbt init automatycznie generuje podstawową strukturę plików:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Studium przypadku: budowanie modeli danych e-commerce z dbt

Konfiguracja surowych źródeł i źródeł danych seed

Ładowanie distribution_center jako seed:

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

W stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Studium przypadku: budowanie modeli danych e-commerce z dbt

Konfiguracja surowych źródeł i źródeł danych seed

Ładowanie orders jako source:

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

W stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Studium przypadku: budowanie modeli danych e-commerce z dbt

Dokumentowanie źródeł i modeli stagingowych

Dokumentowanie sources:

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

W _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Studium przypadku: budowanie modeli danych e-commerce z dbt

Dokumentowanie źródeł i modelu stagingowego

  • Przykładowy plik _looker__models.yml w katalogu models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Distribution center name and location    

  - name: stg_looker__orders
    description: Order information such as order status
Studium przypadku: budowanie modeli danych e-commerce z dbt

Źródła, seed, modele i yaml

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
Studium przypadku: budowanie modeli danych e-commerce z dbt

Powtórzenie: podpolecenia dbt

Ładuje pliki csv jako pliki seed

dbt seed

Tworzy lub aktualizuje wszystkie modele w projekcie dbt

dbt run

Tworzy lub aktualizuje wskazany model

dbt run --select model

Uruchamia wszystkie testy w projekcie dbt

dbt test 

Uruchamia testy dla wskazanego modelu

dbt test --select model

Łączy dbt run i dbt test w jednym!

dbt build
dbt build --select model
Studium przypadku: budowanie modeli danych e-commerce z dbt

Powtórzenie: przewodniki po dobrych praktykach

Struktura nazewnictwa modeli:

  • podwójne podkreślenie oddziela nazwę źródła danych od nazwy modelu
  • <data_source>__<model_name>.sql

np.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Struktura nazewnictwa plików yaml:

  • zaczyna się od pojedynczego podkreślenia
  • podwójne podkreślenie oddziela nazwę źródła danych od nazwy artefaktu
  • _<data_source>__<artifact_type>.yml

np.

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Studium przypadku: budowanie modeli danych e-commerce z dbt

Czas na ćwiczenia!

Studium przypadku: budowanie modeli danych e-commerce z dbt

Preparing Video For Download...