Menyiapkan proyek dbt dan memuat data

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Susan Sun

Freelance Data Scientist

Ulasan: setelan dan inisialisasi dbt

Instal dbt

pip install dbt

Inisialisasi proyek dbt looker_ecommerce

dbt init looker_ecommerce

Verifikasi keberhasilan setelan

cd looker_ecommerce
dbt debug

Direktori berkas otomatis dari dbt:

Ulangan tangkapan layar dari pelajaran sebelumnya. Menampilkan serangkaian direktori yang dibuat otomatis oleh dbt init. Folder tingkat atas bernama looker e-commerce. Folder anak bernama analyses, macros, models, seeds, snapshots, dan tests. Ada juga tiga berkas lain: gitignore, dbt project yaml, dan readme markdown.

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Mengenal data: distribution centers

  • distribution_centers.csv kecil dan statis, hanya 10 baris

  • Contoh berkas mentah distribution_centers.csv

Pratinjau berkas data pusat distribusi berisi tiga baris data dan 4 kolom. Nama kolom: id, name, latitude, dan longitude.

  • id: Pengenal unik tiap pusat distribusi
  • name: Nama pusat distribusi
  • latitude: Koordinat lintang pusat distribusi
  • longitude: Koordinat bujur pusat distribusi
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Mengenal data: orders

orders.csv besar dan terus diperbarui, 125.000 baris dan 9 kolom

  • order_id: ID unik tiap item pesanan
  • user_id: ID pengguna yang membuat pesanan
  • status: Status pesanan
  • gender: Jenis kelamin pengguna
  • created_at: Timestamp pesanan dibuat
  • returned_at: Timestamp pesanan dikembalikan
  • shipped_at: Timestamp pesanan dikirim
  • delivered_at: Timestamp pesanan diterima
  • num_of_items: Jumlah item per pesanan
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Mengenal data: orders

Contoh berkas mentah orders.csv:

Pratinjau berkas data pesanan berisi dua baris data dan 9 kolom. Nama kolom: order id, user id, status, gender, created at, returned at, shipped at, delivered at, dan num of items.

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Menyiapkan sumber mentah dan seed data

Berkas data mentah Pusat distribusi:

  • Karakteristik data:
    • Berkas kecil, flat (csv)
    • Data berubah lambat

Berkas data mentah Orders:

  • Karakteristik data:
    • Dataset besar
    • Data berubah cepat
  • Metode muat dbt:
    • dbt seed
    • Muat sekali (one-time)
  • Metode muat dbt:
    • dbt source
    • Konektor ke DuckDB
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Menyiapkan sumber mentah dan seed data

dbt init membuat struktur berkas dasar otomatis:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Menyiapkan sumber mentah dan seed data

Muat distribution_center sebagai seed:

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

Dalam stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Menyiapkan sumber mentah dan seed data

Muat orders sebagai source:

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

Dalam stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Mendokumentasikan sources dan model staging

Untuk mendokumentasikan sources:

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

Dalam _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Mendokumentasikan sources dan model staging

  • Contoh berkas _looker__models.yml di direktori models yang sama:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Nama dan lokasi pusat distribusi    

  - name: stg_looker__orders
    description: Informasi pesanan seperti status pesanan
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Sources, seeds, model, dan 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
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Ulasan: subperintah dbt

Memuat berkas csv sebagai seed

dbt seed

Membuat atau memperbarui semua model di proyek dbt

dbt run

Membuat atau memperbarui model tertentu

dbt run --select model

Menjalankan semua test di proyek dbt

dbt test 

Menjalankan test untuk model tertentu

dbt test --select model

Menggabungkan dbt run dan dbt test

dbt build
dbt build --select model
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Ulasan: panduan praktik terbaik

Struktur penamaan models:

  • gunakan double underscore untuk memisahkan nama sumber data dan nama model
  • <data_source>__<model_name>.sql

contoh:

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Struktur penamaan berkas yaml:

  • diawali single underscore
  • gunakan double underscore untuk memisahkan nama sumber data dan jenis artefak
  • _<data_source>__<artifact_type>.yml

contoh:

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Ayo berlatih!

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Preparing Video For Download...