Memperdalam teknik data quality di PDI: validasi dan cleansing, lookup serta normalisasi data, manipulasi string dengan regex, penanganan missing values, deduplikasi, agregasi, dan pola transformasi yang membuat pipeline tetap sehat di production.

Data di dunia nyata tidak pernah bersih. Kolom terisi kosong, format tanggal campur aduk, nama pelanggan ditulis tidak konsisten, dan duplikat muncul tanpa henti. Episode ini membahas data quality — keterampilan yang membedakan pipeline amatir dari pipeline profesional.
Kalian akan belajar pola transformasi untuk membersihkan, memvalidasi, menormalkan, dan mendeduplikasi data. Ini bukan sekadar deretan step; ini adalah cara berpikir tentang kebenaran data sebelum data itu dipercaya untuk pengambilan keputusan.
Validasi adalah gerbang pertama. Sebelum data masuk ke warehouse, pastikan ia layak. Dua step yang paling sering dipakai:
jumlah <= 0.Pola klasiknya: baris yang valid melanjutkan alur ke proses selanjutnya, baris yang gagal dikirim ke file log khusus atau step Write to log agar bisa diinvestigasi. Jangan pernah membiarkan data buruk diam-diam ikut ke warehouse.
Danger
Keputusan penting yang harus kalian buat di awal desain: apakah baris yang gagal validasi ditolak, diperbaiki, atau ditandai? Jangan tinggalkan keputusan ini tersirat. Pipeline yang bagus mendokumentasikan keputusan ini secara eksplisit di desainnya.
Cleansing membersihkan data dari kotoran; normalisasi membuat nilainya konsisten. Beberapa teknik yang wajib kalian kuasai:
trim, mengubah huruf besar/kecil, dan membersihkan karakter tak diinginkan.Contoh penggunaan String operations untuk normalisasi nama: terapkan trim lalu ubah menjadi title case. Atau gunakan step Replace in string untuk mengganti semua kemunculan karakter tertentu:
pola: [^a-zA-Z0-9 ]
tujuan: menghapus semua karakter selain huruf, angka, dan spasiRegex adalah salah satu keterampilan paling bernilai di dunia ETL. Luangkan waktu untuk berlatih dasar-dasarnya — kalian akan menggunakannya hampir setiap hari.
Selain regex, String operations menawarkan transformasi umum dalam satu dialog: trim, lower, upper, initCap, pad, dan substr. Kombinasi paling sering adalah trim lalu initCap untuk nama orang, atau upper untuk kode yang dibandingkan case-insensitif. Aturannya sederhana: buat nilai konsisten sebelum data dipakai untuk join atau deduplikasi, bukan sesudahnya.
Contoh nyata normalisasi: kolom no_hp diisi dengan beragam format seperti 0812-3456-7890, +62 812 3456 7890, dan 62812.3456.7890. Dengan Replace in string berantai — hapus spasi, strip tanda baca, lalu normalisasi awalan — kalian mengubah semua varian menjadi satu format standar yang bisa dicocokkan dan dicari duplikatnya. Sebelum menyalin pola ke Spoon, biasakan menguji dulu di terminal dengan grep -E "pola" contoh.txt — umpan balik instan dari baris perintah jauh lebih cepat daripada trial-and-error di dialog step.
Data kosong bukan berarti hilang. Yang penting adalah bagaimana kalian menanganinya secara sadar. Beberapa strategi:
TIDAK DIKETAHUI atau angka 0.Step If field value is null memisahkan baris yang memiliki nilai kosong sehingga kalian bisa menangani dua kelompok secara berbeda. Jangan biarkan null mengalir sampai ke database tanpa keputusan yang jelas.
Duplikat adalah musuh kualitas data. Dua pendekatan utama:
Untuk data yang lebih kompleks — misalnya menentukan satu representasi terbaik per pelanggan dari beberapa sumber — gunakan Group by dengan agregasi seperti MIN, MAX, atau pemilihan nilai pertama yang valid. Teknik ini disebut deduplication dan sangat penting saat menggabungkan data dari banyak sistem.
Lookup adalah cara menambah informasi dari tabel referensi. Tiga step yang paling berguna:
PRIORITY=1 menjadi URGENT.Kombinasi lookup dengan caching — mengaktifkan Enable caching pada Database lookup atau memuat tabel referensi kecil ke memori — adalah salah satu optimasi performa paling mudah dan efektif.
Info
Aturan praktis lookup: jika tabel referensi kecil dan jarang berubah, muat sekali ke memori lalu lakukan stream lookup. Jika tabelnya besar atau selalu terbaru, gunakan database lookup dengan caching dan batasi jumlah kolom yang diambil. Detail optimasi ini akan dibahas lagi di episode 8 dan 15.
Terakhir, kuasai agregasi. Step Group by mengelompokkan data berdasarkan satu atau beberapa field lalu menghitung agregat seperti SUM, COUNT, AVG, MIN, dan MAX. Contoh: hitung total penjualan per pelanggan per bulan dari tabel transaksi.
Berikut query yang setara dengan hasil Group by di PDI — memahami keduanya membuat kalian lebih leluasa memilih tempat melakukan agregasi:
SELECT id_pelanggan,
DATE_TRUNC('month', tanggal) AS bulan,
SUM(jumlah) AS total,
COUNT(*) AS jumlah_transaksi
FROM orders
GROUP BY id_pelanggan, DATE_TRUNC('month', tanggal)Mana yang dipilih — step Group by atau query SQL — tergantung apakah agregasi harus terbaca visual di pipeline atau bisa diserahkan ke database. Keduanya sah, selama hasilnya diukur dan konsisten.
Selain teknik, ada pola transformasi sehat yang harus dijadikan kebiasaan:
Pola ini bukan sekadar kerapian — merekalah yang membuat pipeline mudah di-debug dan diwariskan ke tim lain, topik yang akan dibahas lagi di episode 22.
Di episode 6 ini kalian menguasai teknik data quality di PDI: validasi dengan Validator dan Filter rows, cleansing serta normalisasi string dengan regex dan konversi tipe, penanganan missing values, deduplikasi, lookup untuk enrichment, dan agregasi dengan Group by.
Inti yang harus dibawa pulang:
Di episode 7, kita membahas saat-saat menegangkan: error handling & debugging — menangani error di transformation dan job, memakai preview rows dan breakpoint, membaca step log dan performance metrics, serta strategi recovery untuk transformasi yang gagal.