Episode ini menjelaskan pipeline data dari source menuju warehouse: perbedaan ETL dan ELT, peran tool seperti dbt dan Fivetran/Airbyte, data quality checks, serta praktik membangun pipeline sederhana yang mengubah data mentah Superstore menjadi model star schema yang siap dashboard

Setelah di episode 5 kalian merancang model star schema, muncul pertanyaan besar: siapa yang membangun tabel-tabel itu setiap hari? Data baru masuk terus-menerus — kalau kalian membangun fact_orders secara manual, pekerjaan itu tidak akan pernah selesai. Jawabannya adalah pipeline data, dan episode ini akan membekali kalian pemahaman dasar ETL/ELT serta praktiknya dengan dbt.
Mengapa BI Analyst perlu memahami pipeline? Karena dashboard kalian hanya sebagus pipeline yang mengisinya. Kalau pipeline berhenti tengah malam atau menyalin data kotor, dashboard pagi hari akan menyesatkan. Kalian tidak perlu jadi Data Engineer, tetapi wajib bisa membaca, memvalidasi, dan berkomunikasi dengan pipeline — itu bagian dari menjaga keandalan report.
Dua arsitektur pipeline yang wajib kalian bedakan:
| Aspek | ETL | ELT |
|---|---|---|
| Urutan | Transform sebelum load | Load sebelum transform |
| Lokasi transformasi | Server/alat terpisah | Di dalam warehouse |
| Kapan dipakai | Data sensitif, target tidak mampu query besar | Warehouse cloud modern (2020-an) |
| Contoh tool | Talend, Informatica (klasik) | dbt, SQL views, Stored Proc |
ELT adalah standar modern. Di sini pipeline biasanya dibagi dua peran:
Pipeline dbt yang baik mengikuti alur bertahap:
raw data (dari connector)
→ staging_orders (bersihkan tipe data, rename kolom)
→ dim_customer, dim_product, fact_orders (model inti)
→ marts: revenue_report, region_performance (siap dipakai dashboard)Tiga lapisan yang umum:
| Lapisan | Fungsi | Contoh |
|---|---|---|
| Staging | Bersihkan & standarkan data mentah | stg_orders (cast tanggal, rename) |
| Intermediate | Model antar-langkah yang logis | gabungan order + customer |
| Marts | Model akhir siap BI/dashboard | fact_orders, marts_revenue |
Lapisan ini menjawab pertanyaan klasik: "model ini dipakai dashboard atau masih bahan olahan?" — kalian selalu tahu kapan harus berhati-hati mengubah sebuah tabel.
Sekarang bangun pipeline ELT sederhana dengan dbt (data build tool) — standar modern untuk transformasi data. Install dbt dan inisialisasi project:
pip install dbt-postgres
dbt init bi_pipeline
cd bi_pipeline
dbt debugBuat file sumber data pertama — beri tahu dbt di mana orders mentah berada:
sources:
- name: bi_lab
tables:
- name: orders
columns:
- name: order_id
tests: [not_null]
- name: sales
tests: [not_null]Lalu bangun model staging yang membersihkan data mentah:
SELECT
order_id::text AS order_id,
order_date::date AS order_date,
customer_id::text AS customer_id,
product_id::text AS product_id,
sales::numeric AS sales,
quantity::int AS quantity,
profit::numeric AS profit
FROM {{ source('bi_lab', 'orders') }}
WHERE order_id IS NOT NULL
AND sales IS NOT NULL{{ source(...) }} adalah Jinja template dbt yang otomatis merujuk ke sumber yang dideklarasikan di sources.yml. Perhatikan pembersihan di sini: cast tipe data eksplisit dan filter baris yang tidak valid — inilah data quality yang dimulai sejak hulu.
Terakhir, bangun model fact_orders bersih yang siap dipakai dashboard:
WITH orders AS (
SELECT *
FROM {{ ref('stg_orders') }}
)
SELECT
order_id,
order_date,
customer_id,
product_id,
sales,
quantity,
profit
FROM ordersJalankan pipeline dan verifikasi:
dbt run
dbt test
dbt builddbt build menjalankan semua model plus tes — satu perintah untuk seluruh pipeline. Output akhirnya: tabel stg_orders dan fact_orders siap dipakai BI.
Note
dbt test adalah data quality Anda yang paling murah: tes not_null dan unique di atas menjamin pipeline tidak diam-diam menghasilkan data rusak. Kita akan memperdalam data quality & governance di episode 14 — termasuk data profiling dan lineage.
Data quality tidak hanya urusan Data Engineer. Sebagai BI Analyst, kalian wajib:
profit yang anehnya nol di satu region, atau sales negatif.not_null, unique, accepted_values, hingga tes kustom di dbt.Inti yang harus dibawa pulang:
not_null/unique di dbt test jauh lebih murah daripada dashboard yang salah.stg_orders → fact_orders) berhasil dijalankan dengan dbt build.Di episode 7 selanjutnya kita akan masuk ke dunia visual: data visualization principles — memilih chart yang tepat, prinsip encoding visual, dan bagaimana menghindari visualisasi yang menyesatkan. Pipeline kalian sudah bersih, sekarang saatnya membuat angkanya berbicara!