Belajar Pentaho - Data Quality & Transformation Patterns
Episode 6 of 23

Belajar Pentaho - Data Quality & Transformation Patterns

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.

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

Pendahuluan

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 Data: Berhenti Sebelum Terlambat

Validasi adalah gerbang pertama. Sebelum data masuk ke warehouse, pastikan ia layak. Dua step yang paling sering dipakai:

  • Validator: mendefinisikan aturan per field — tipe, panjang, bukan null, atau cocok dengan regex. Baris yang gagal validasi dipisahkan ke output tersendiri.
  • Filter rows: memisahkan baris berdasarkan kondisi sederhana, misalnya mengeluarkan baris dengan 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 dan Normalisasi

Cleansing membersihkan data dari kotoran; normalisasi membuat nilainya konsisten. Beberapa teknik yang wajib kalian kuasai:

  • String operations: menghapus spasi ganda dengan trim, mengubah huruf besar/kecil, dan membersihkan karakter tak diinginkan.
  • Data type conversion: memastikan field memiliki tipe yang benar — tanggal menjadi Date, angka menjadi Number. Step Select values bisa mengubah tipe sekaligus menamai ulang field.
  • Regex evaluation / String replacement: memanfaatkan ekspresi reguler untuk menemukan dan mengganti pola. Contoh nyata: memformat nomor telepon atau membersihkan kode pos yang tidak konsisten.

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:

Contoh pola regex untuk membersihkan nilai
pola:    [^a-zA-Z0-9 ]
tujuan:  menghapus semua karakter selain huruf, angka, dan spasi

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

Menangani Missing Values

Data kosong bukan berarti hilang. Yang penting adalah bagaimana kalian menanganinya secara sadar. Beberapa strategi:

  • Hapus baris: sesuai jika baris dengan field kosong tidak berguna bagi analisis.
  • Isi dengan nilai default: gunakan step If field value is null atau Calculator dengan fungsi pengganti, misalnya mengganti null dengan string TIDAK DIKETAHUI atau angka 0.
  • Isi dengan nilai turunan: misalnya rata-rata kolom, nilai dari baris sebelumnya, atau hasil lookup — lebih masuk akal untuk data analitik tertentu.

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.

Deduplikasi Data

Duplikat adalah musuh kualitas data. Dua pendekatan utama:

  • Sort rows + Row comparator / Unique rows: setelah mengurutkan berdasarkan kunci, hilangkan baris yang identik dengan baris sebelumnya.
  • Group by + agregasi: jika data sudah teragregasi, cara ini menggabungkan duplikat menjadi satu baris dengan ringkasan.

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: Memperkaya Data dari Sumber Lain

Lookup adalah cara menambah informasi dari tabel referensi. Tiga step yang paling berguna:

  • Database lookup: mencari nilai tambahan dari database per baris berdasarkan kunci. Sederhana, tapi setiap baris melakukan query — hati-hati dengan volume besar.
  • Stream lookup: mencari di stream (aliran) lain yang sudah dimuat ke memori. Lebih cepat untuk data kecil-menengah.
  • Value mapper: memetakan nilai sederhana satu ke satu tanpa database, misalnya 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.

Agregasi dan Pola Transformasi Sehat

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:

Agregasi penjualan per pelanggan per bulan
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:

  • Satu transformasi, satu tanggung jawab: jangan membuat transformasi raksasa dengan 50 step. Pecah menjadi beberapa transformasi dengan nama yang menjelaskan.
  • Pisahkan cleansing dari agregasi: transformasi pembersihan menghasilkan data bersih yang bisa dipakai ulang, bukan tersembunyi di dalam transformasi laporan.
  • Logging di setiap tahap penting: tambahkan step Write to log di titik-titik kunci untuk memudahkan audit.
  • Dokumentasikan keputusan data: beri anotasi pada step yang melakukan transformasi bisnis yang tidak jelas tujuannya.

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.

Penutup

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:

  • Buat keputusan eksplisit untuk setiap baris bermasalah: tolak, perbaiki, atau tandai.
  • Normalisasi konsisten (trim, case, tipe data) mencegah error misterius di tahap berikutnya.
  • Missing values ditangani dengan strategi yang disadari, bukan dibiarkan mengalir.
  • Deduplikasi dan lookup yang benar menentukan kualitas analisis yang lahir dari data.

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.

Belajar Pentaho - Data Quality & Transformation Patterns | Belajar Pentaho