Episode ini membahas data quality & governance dari sudut pandang BI: data profiling, tujuh dimensi kualitas data, data lineage untuk melacak asal angka, trust framework, dan praktik membangun audit data quality untuk Superstore

Di episode 13 kalian membuka self-service BI ke banyak pengguna. Sekarang muncul pertanyaan paling sensitif: kalau banyak orang memakai data, bagaimana memastikan datanya benar? Satu angka yang salah di dashboard bisa mengubah keputusan jutaan rupiah — dan kepercayaan stakeholder hilang lebih cepat daripada dibangun kembali.
Episode ini membahas data quality & governance: bukan hanya urusan Data Engineer, tetapi tanggung jawab bersama yang dimulai dari sikap kalian terhadap setiap angka yang keluar. Sebagai BI Analyst, kalian adalah garda terakhir sebelum angka dilihat stakeholder — kalian wajib bisa membuktikan bahwa angka itu benar.
Kualitas data tidak satu ukuran. Tujuh dimensi yang umum dijadikan acuan:
| Dimensi | Pertanyaan | Contoh Pemeriksaan |
|---|---|---|
| Completeness | Apakah semua data ada? | Persentase NULL di kolom sales |
| Accuracy | Apakah data benar? | profit = revenue - cost? |
| Consistency | Apakah sama di semua tempat? | region di orders vs dim_customer |
| Timeliness | Apakah data masih segar? | Data kemarin sudah masuk pipeline pagi ini? |
| Uniqueness | Apakah tidak ada duplikat? | order_id unik di fact_orders |
| Validity | Apakah sesuai aturan format? | order_date bukan teks aneh |
| Integrity | Apakah relasi antar tabel utuh? | customer_id di fact ada di dimension |
Dashboard yang bagus pun tidak berguna jika salah satu dimensi di atas rusak. Kalian tidak perlu memeriksa semuanya setiap hari — tetapi wajib tahu dimensi mana yang paling berisiko untuk data yang kalian kelola.
Data profiling adalah proses memeriksa data untuk memahami isinya sebelum dibangun di atasnya. Ini langkah pertama yang harus dilakukan sebelum membangun dashboard dari sumber baru. Contoh profiling di SQL:
SELECT
COUNT(*) AS total_rows,
COUNT(DISTINCT order_id) AS unique_orders,
COUNT(*) - COUNT(order_id) AS null_order_id,
COUNT(*) - COUNT(sales) AS null_sales,
MIN(order_date) AS earliest,
MAX(order_date) AS latest,
ROUND(AVG(sales), 2) AS avg_sales,
ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY sales)::numeric, 2) AS median_sales
FROM fact_orders;Bacaan hasilnya:
unique_orders vs total_rows → apakah ada baris duplikat?null_* → seberapa lengkap datanya?earliest/latest → rentang waktu (masuk akal atau ada outlier tanggal)?avg_sales vs median_sales → jika jauh berbeda, ada outlier besar yang perlu diselidiki.Profiling rutin ini — dipadukan dengan dbt test dari episode 6 — adalah alat deteksi dini data rusak.
Data lineage adalah peta perjalanan data: dari sumber mentah, melewati transformasi, sampai muncul di dashboard. Kenapa penting? Karena saat stakeholder bertanya "kenapa angka ini beda?", kalian harus bisa menelusuri asal angkanya dalam hitungan menit.
Alur lineage yang sehat:
orders.csv (source)
→ stg_orders (staging, cast tipe data)
→ fact_orders (mart, relasi ke dim)
→ semantic layer (metric: revenue)
→ dashboard Sales PerformanceDalam praktiknya:
dbt docs generate menampilkan DAG lengkap) — momen untuk menghargai keputusan kita di episode 6.Data yang baik tidak cukup — pengguna harus percaya. Trust dibangun lewat transparansi, bukan lewat janji. Tiga kebiasaan yang membangun kepercayaan:
Important
Kepercayaan adalah satu-satunya aset BI yang tidak bisa dibeli dengan tool. Satu angka salah yang dibiarkan tanpa penjelasan lebih mahal daripada seratus dashboard yang benar. Transparansi soal kualitas data — termasuk kekurangannya — justru memperkuat kepercayaan.
Data governance adalah seperangkat aturan tentang siapa boleh melakukan apa terhadap data. Sebagai BI Analyst, bagian kalian:
Governance tidak harus birokrasi berat — cukup aturan yang jelas, terdokumentasi, dan dipatuhi semua orang.
Jalankan audit rutin untuk Superstore — buat jadwal (mingguan/bulanan) dan simpan hasilnya:
Audit Checklist (setiap Senin pagi):
[ ] jumlah baris fact_orders: 12.340 (bandingkan dgn minggu lalu)
[ ] jumlah baris stg_orders == fact_orders? (tidak ada data hilang di transform)
[ ] NULL di kolom kritis (sales, profit, order_id)? = 0
[ ] duplikat order_id? = 0
[ ] margin % dalam rentang wajar (mis. -50% s.d. +80%)? (cek outlier)
[ ] timestamp terakhir == jam pipeline terakhir? (data segar)
[ ] dbt test lulus 100%?Kalau salah satu gagal → temukan penyebabnya sebelum membuka dashboard ke stakeholder, atau tandai dengan jelas di dashboard.
not_null: kualitas punya tujuh dimensi; kelengkapan hanyalah satu.Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan membahas advanced analytics dalam BI — forecast, clustering, dan anomaly detection sederhana yang bisa kalian jalankan langsung di dashboard. Data kalian sudah bersih dan dipercaya; sekarang saatnya membuatnya lebih pintar. Pastikan tetap semangat!