Belajar Data Analyst - dbt & Analytics Engineering
Episode 17 of 28

Belajar Data Analyst - dbt & Analytics Engineering

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

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Konsep: Transformasi sebagai Kode

Sebelum dbt, transformasi data sering terjadi di script ETL yang berantakan. dbt mengubah paradigma:

SebelumDengan dbt
Transformasi di script Python tersebarTransformasi sebagai SQL dalam satu repo
Tidak ada riwayat perubahanGit version control untuk semua model
Test jarang, kalau adaTest otomatis di setiap build
Definisi metrik tidak jelasModel terstruktur, terdokumentasi
Satu orang bisa menjalankannyaSiapa pun dengan akses bisa menjalankan

Tiga lapisan model yang umum di dbt (gaya medallion):

text
stg_orders      → source data dibersihkan (staging)
int_customer_order → join & agregasi (intermediate)
fct_orders      → tabel fakt siap dipakai analis (marts)
100%

Setup Project dbt

Mulai dengan project dbt yang terhubung ke PostgreSQL (yang sudah berjalan dari episode 0).

Install dan inisialisasi dbt
pip install dbt-postgres
dbt init analytics_project
cd analytics_project

Sesuaikan koneksi database di profiles.yml:

Profiles.yml untuk PostgreSQL
analytics_project:
  target: dev
  outputs:
    dev:
      type: postgres
      host: localhost
      port: 5432
      user: postgres
      password: secret
      dbname: postgres
      schema: analytics
      threads: 4
Verifikasi koneksi
dbt debug

dbt debug memeriksa koneksi ke database dan konfigurasi project — langkah wajib sebelum menulis model apa pun.

Model Pertama: dari Source ke Staging

Model di dbt adalah file .sql yang berisi SELECT, dan hasilnya menjadi tabel/view di warehouse. Mulai dari source definition:

schema.yml: definisi source
version: 2
 
sources:
  - name: raw
    database: postgres
    schema: public
    tables:
      - name: orders
      - name: customers
stg_orders.sql: staging model
SELECT
    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.

Menjalankan dan Menguji Pipeline

Jalankan model dan uji
dbt run
dbt test
dbt build
  • dbt 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:

schema.yml: model + test
version: 2
 
models:
  - name: stg_orders
    columns:
      - name: order_id
        tests:
          - unique
          - not_null

Sekarang 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.

Model Mart: Siap untuk Dashboard

Lapisan akhir yang dipakai BI tools adalah mart — tabel agregat yang ramah analis:

fct_orders_daily.sql: mart harian
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_date

Perhatikan {{ ref('stg_orders') }}ref adalah fitur inti dbt yang otomatis memahami dependensi antar model, sehingga urutan build dan lineage (episode 18) terkelola sendiri.

Verifikasi dengan Docs

dbt bahkan menghasilkan dokumentasi visual dari model kalian:

Buka dokumentasi dbt
dbt docs generate
dbt docs serve

Halaman 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.

Kesalahan Umum

  • source vs ref tertukar. source mengacu data mentah; ref mengacu model dbt lain.
  • Semua di satu model raksasa. Pecah menjadi staging → intermediate → marts agar test dan review memungkinkan.
  • Tanpa test. dbt tanpa test adalah SQL yang dirapikan — manfaat utamanya justru di test.
  • Mengabaikan environment. dev (local) dan prod harus dipisah agar analis bisa eksperimen bebas.

Penutup

Inti yang harus dibawa pulang:

  • dbt memperlakukan transformasi SQL sebagai kode: git, review, test, deploy.
  • Model berlapis: staging → intermediate → marts (medallion).
  • ref dan source mengelola dependensi; dbt build = run + test.
  • dbt adalah gerbang menuju peran Analytics Engineer — profil paling dicari 2026.

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!

Belajar Data Analyst - dbt & Analytics Engineering | Belajar Data Analyst