Episode ini memperkenalkan dbt dan peran analytics engineer: transformasi SQL sebagai kode dengan model, test, dan version control. Kalian akan menyiapkan project dbt, menulis model pertama, menjalankan pipeline transformasi, dan memahami mengapa skill ini paling dicari tahun 2026

Selama ini kalian menulis query analisis secara ad-hoc: buka client, tulis SELECT, jalankan, selesai. Masalahnya, query yang sama ditulis ulang oleh lima orang dengan cara berbeda — dan tidak ada yang tahu definisi "revenue" yang mana yang benar. Di perusahaan modern, ini tidak bisa dibiarkan.
Solusinya adalah dbt (data build tool): kerangka kerja yang memperlakukan transformasi data seperti kode perangkat lunak — versi, review, test, dan deploy. Peran yang menguasainya disebut Analytics Engineer, dan di 2026 inilah salah satu profil data yang paling banyak direkrut. Episode ini membangun fondasinya: project dbt, model pertama, dan pipeline transformasi yang bisa kalian jalankan sendiri.
Sebelum dbt, transformasi data sering terjadi di script ETL yang berantakan. dbt mengubah paradigma:
| Sebelum | Dengan dbt |
|---|---|
| Transformasi di script Python tersebar | Transformasi sebagai SQL dalam satu repo |
| Tidak ada riwayat perubahan | Git version control untuk semua model |
| Test jarang, kalau ada | Test otomatis di setiap build |
| Definisi metrik tidak jelas | Model terstruktur, terdokumentasi |
| Satu orang bisa menjalankannya | Siapa pun dengan akses bisa menjalankan |
Tiga lapisan model yang umum di dbt (gaya medallion):
stg_orders → source data dibersihkan (staging)
int_customer_order → join & agregasi (intermediate)
fct_orders → tabel fakt siap dipakai analis (marts)Mulai dengan project dbt yang terhubung ke PostgreSQL (yang sudah berjalan dari episode 0).
pip install dbt-postgres
dbt init analytics_project
cd analytics_projectSesuaikan koneksi database di profiles.yml:
analytics_project:
target: dev
outputs:
dev:
type: postgres
host: localhost
port: 5432
user: postgres
password: secret
dbname: postgres
schema: analytics
threads: 4dbt debugdbt debug memeriksa koneksi ke database dan konfigurasi project — langkah wajib sebelum menulis model apa pun.
Model di dbt adalah file .sql yang berisi SELECT, dan hasilnya menjadi tabel/view di warehouse. Mulai dari source definition:
version: 2
sources:
- name: raw
database: postgres
schema: public
tables:
- name: orders
- name: customersSELECT
id AS order_id,
customer_id,
product,
amount,
status,
ordered_at
FROM {{ source('raw', 'orders') }}
WHERE status IS NOT NULL;Perhatikan {{ source('raw', 'orders') }} — ini Jinja templating, fitur yang membuat dbt dinamis. dbt menerjemahkannya menjadi nama tabel lengkap di database.
dbt run
dbt test
dbt builddbt run mengeksekusi semua model dan membuat tabel.dbt test menjalankan test yang didefinisikan.dbt build keduanya — urutan yang disarankan setiap kali.Definisikan test pada model di schema.yml:
version: 2
models:
- name: stg_orders
columns:
- name: order_id
tests:
- unique
- not_nullSekarang dbt test akan gagal jika ada order_id duplikat atau kosong — data quality dicegah sebelum masuk ke analisis. Topik ini kita dalami di episode 18.
Tip
Alur kerja analis di perusahaan dbt: analis menulis model di cabang git, menjalankan dbt build, meminta review, lalu di-merge ke main dan di-deploy. Inilah alasan "SQL sebagai kode" mengubah cara kerja tim data — kolaborasi, bukan query personal.
Lapisan akhir yang dipakai BI tools adalah mart — tabel agregat yang ramah analis:
WITH order_detail AS (
SELECT
ordered_at::date AS order_date,
status,
amount
FROM {{ ref('stg_orders') }}
WHERE status = 'completed'
)
SELECT
order_date,
COUNT(*) AS jumlah_order,
SUM(amount) AS revenue,
SUM(amount) / COUNT(*) AS aov
FROM order_detail
GROUP BY order_datePerhatikan {{ ref('stg_orders') }} — ref adalah fitur inti dbt yang otomatis memahami dependensi antar model, sehingga urutan build dan lineage (episode 18) terkelola sendiri.
dbt bahkan menghasilkan dokumentasi visual dari model kalian:
dbt docs generate
dbt docs serveHalaman docs menampilkan lineage graph: garis yang menunjukkan dari source mana tiap model lahir dan ke mana ia dipakai. Ini dokumentasi yang lahir otomatis — bukan dokumen yang tidak pernah diperbarui.
source vs ref tertukar. source mengacu data mentah; ref mengacu model dbt lain.dev (local) dan prod harus dipisah agar analis bisa eksperimen bebas.Inti yang harus dibawa pulang:
ref dan source mengelola dependensi; dbt build = run + test.Di episode 18 selanjutnya kita memastikan semua data yang diproduksi bisa dipercaya: Data Governance & Data Quality — quality checks, data catalog, lineage, dan dokumentasi metrik, plus setup test kualitas data di project dbt kalian. Pipeline sudah jalan; sekarang kita jaga agar ia tetap sehat!