Tutorial dbt: Analytics Engineering dan Transformasi Data Modern

# Analytics Engineering dengan dbt: Panduan Praktis dbt (data build tool) telah menjadi bagian standar dari modern data stack karena membawa disiplin software engineering ke transformasi data berbasi...

By Ruby Abdullah · · tutorial
dbtAnalytics EngineeringData TransformationSQLData WarehouseELT

Analytics Engineering dengan dbt: Panduan Praktis

dbt (data build tool) telah menjadi bagian standar dari modern data stack karena membawa disiplin software engineering ke transformasi data berbasis SQL. Tutorial ini membahas apa itu dbt, cara menyiapkannya, dan cara membangun proyek transformasi yang mudah dirawat, lengkap dengan contoh SQL dan YAML realistis yang bisa Anda sesuaikan dengan warehouse Anda sendiri.

Apa Itu dbt dan Alur Kerja Analytics Engineering

dbt adalah alat transformasi yang memungkinkan Anda mengekspresikan transformasi data sebagai pernyataan SELECT SQL. dbt tidak melakukan ekstraksi atau pemuatan data; ia berada di bagian T dari ELT, berjalan di dalam data warehouse Anda (Snowflake, BigQuery, Redshift, Postgres, Databricks, dan lainnya). Anda menulis model, lalu dbt mengompilasinya menjadi SQL dan menjalankannya sesuai urutan dependensi.

Peran yang muncul seiring alur kerja ini adalah analytics engineer: seseorang yang menerapkan praktik engineering, version control, pengujian, code review, dokumentasi, dan desain modular, pada kode analitik yang dahulu ditulis sebagai query ad-hoc.

Alur kerja dbt yang umum terlihat seperti ini:

  • Data mentah masuk ke warehouse melalui alat ingesti (Fivetran, Airbyte, pipeline kustom).
  • Anda mendefinisikan sources yang menunjuk ke tabel mentah tersebut.
  • Anda membangun staging model yang membersihkan dan mengganti nama kolom.
  • Anda membangun model intermediate dan mart yang melakukan join dan agregasi.
  • Anda menambahkan tests dan dokumentasi.
  • Anda menjalankan dbt build secara terjadwal, di CI, atau melalui dbt Cloud.
  • Manfaat utamanya adalah keterulangan (repeatability), pelacakan lineage, dan kemampuan menguji transformasi layaknya kode aplikasi.

    Instalasi

    dbt didistribusikan sebagai dbt-core ditambah paket adapter untuk warehouse spesifik Anda. Pasang hanya adapter yang Anda butuhkan.

    # Buat environment terisolasi terlebih dahulu
    

    python -m venv .venv

    source .venv/bin/activate

    Postgres

    pip install dbt-postgres

    Atau BigQuery

    pip install dbt-bigquery

    dbt-core terpasang otomatis sebagai dependensi

    dbt --version

    dbt membaca pengaturan koneksi dari file profiles.yml. Secara default file ini berada di ~/.dbt/profiles.yml, terpisah dari proyek Anda agar kredensial tidak masuk ke version control.

    # ~/.dbt/profiles.yml
    

    jaffleshop:

    target: dev

    outputs:

    dev:

    type: postgres

    host: localhost

    port: 5432

    user: analytics

    password: "{{ envvar('DBTPASSWORD') }}"

    dbname: analytics

    schema: dbtdev

    threads: 4

    Menggunakan envvar() menjaga rahasia tetap di luar file. Uji koneksi dengan:

    dbt debug
    

    Struktur Proyek

    Buat proyek baru dengan dbt init, lalu telusuri struktur yang dihasilkan.

    dbt init jaffleshop
    

    Proyek dbt berpusat pada dbtproject.yml dan sekumpulan direktori konvensional:

    jaffleshop/
    

    dbtproject.yml # konfigurasi proyek

    models/ # pernyataan SELECT (transformasi Anda)

    staging/

    marts/

    seeds/ # file CSV statis yang dimuat sebagai tabel

    snapshots/ # pelacakan SCD type 2

    macros/ # Jinja yang dapat dipakai ulang

    tests/ # singular test (kustom)

    analyses/ # query ad-hoc yang dikompilasi namun tidak dijalankan

    File dbtproject.yml mengikat semuanya dan menetapkan nilai default:

    name: 'jaffleshop'
    

    version: '1.0.0'

    profile: 'jaffleshop'

    model-paths: ["models"]

    seed-paths: ["seeds"]

    snapshot-paths: ["snapshots"]

    macro-paths: ["macros"]

    models:

    jaffleshop:

    staging:

    +materialized: view

    marts:

    +materialized: table

    Kunci +materialized menetapkan default per folder. Awalan + menandai sebuah konfigurasi, bukan jalur model bersarang.

    Artikel Terkait

    Tutorial Ibis: API DataFrame Portabel untuk Banyak Backend

    Ibis: API Dataframe Python yang Portabel di Banyak Backend Ibis adalah library dataframe Python yang memungkinkan Anda m...

    Tutorial dlt: Pipeline Ingestion Data Berbasis Python

    Membangun Pipeline EL Berbasis Python dengan dlt (data load tool) Sebagian besar tim data menghabiskan waktu yang tidak ...

    DuckDB: Database Analitik In-Process untuk Data Science

    DuckDB: Database Analitik In-Process untuk Data Science DuckDB adalah database analitik in-process yang dirancang khusus...

    Tutorial PostgreSQL Advanced untuk ML: Analytics dan Feature Engineering

    Tutorial 17: PostgreSQL Lanjutan untuk Machine Learning Daftar Isi Pendahuluan Prasyarat Window Functions untuk Rekayasa...