Praktik pertama merakit transformasi di Spoon: menambahkan step input, transformasi, dan output, memakai step populer seperti Table input, Text file input, Filter rows, Join, dan Split, memahami row stream dan field metadata, lalu menjalankan transformasi serta memeriksa preview data.

Inilah episode di mana kalian benar-benar membuat sesuatu. Kalian akan merakit transformasi pertama: membaca data dari database dan file, mengubah bentuknya, lalu menulis hasilnya. Lebih penting lagi, kalian akan memahami konsep yang menggerakkan semuanya — row stream, field metadata, dan alur data antar step.
Anggap transformasi sebagai resep masakan: bahan masuk di satu sisi, melewati beberapa tahap pengolahan, dan keluar sebagai hidangan. Di Spoon, setiap tahap adalah sebuah step.
Transformasi di PDI dibangun dari tiga jenis elemen:
Kalian menghubungkan step-step ini dengan hop — garis panah yang menunjukkan arah aliran data. Data yang mengalir disebut row stream: setiap baris melewati step satu per satu, diproses, lalu diteruskan ke step berikutnya.
Untuk memulai, buat transformation baru lalu tambahkan sebuah Table input dari palet. Klik dua kali step tersebut dan isi SQL-nya:
SELECT id, nama, tanggal, jumlah
FROM orders
WHERE status = 'PENDING'Jangan lupa pilih koneksi database LAB_PG yang kalian buat di episode 3. Setelah menjalankan transformasi (tombol play), kalian bisa memeriksa data yang mengalir dengan mengklik kanan step dan memilih Preview.
Saat data mengalir dari satu step ke step lain, setiap row membawa metadata field: nama field, tipe data (String, Integer, Number, Date, Boolean), panjang, dan presisi. Metadata ini ditentukan oleh step input dan dimodifikasi oleh step transformasi.
Untuk melihat metadata sebuah step, buka dialog step lalu klik tab Fields pada step seperti Table input — atau klik kanan hop dan pilih Show input/output fields. Contoh: step Table input di atas akan menghasilkan field id bertipe Integer, nama bertipe String, tanggal bertipe Date, dan jumlah bertipe Number.
Memahami metadata sangat penting karena banyak error di PDI berakar dari ketidakcocokan tipe: menggabungkan dua stream yang field-nya bernama sama tapi tipe berbeda, atau menulis nilai String ke kolom Number di database. Kebiasaan mengecek metadata sebelum merakit step selanjutnya akan menghemat banyak waktu debugging.
Ada satu detail hop yang sering membingungkan pemula: sebuah step bisa mengirim baris ke beberapa step berikutnya sekaligus. Ketika kalian menghubungkan satu output ke dua step, PDI bertanya apakah kalian ingin membuat hop kopi (copy) — salinan baris yang sama dikirim ke kedua cabang — atau hop transformasi (distribution) yang membagi baris secara round-robin. Untuk aliran yang isinya harus sama di kedua cabang, pilih copy; untuk membagi beban antar cabang pemrosesan, pilih distribution.
Pola ini berguna, misalnya, saat satu stream harus dikirim ke proses normalisasi dan ke proses audit sekaligus — tanpa mengalirkan baris dua kali secara tidak sengaja.
Saat memakai Preview, perhatikan dua hal di tab Fields: tipe data yang ditampilkan dan nilai null. Banyak data yang terlihat seperti teks sebenarnya disimpan sebagai Date atau Number oleh step input — dan salah membaca tipe inilah sumber error paling umum di episode 6 dan seterusnya. Biasakan menyesuaikan kolom Type dan Format di dialog step agar metadata sesuai kenyataan.
Latihan singkat: tambahkan Select values setelah Text file input, ubah tipe harga menjadi Number, dan perhatikan bagaimana Preview menampilkan angka dengan benar. Inilah siklus cek metadata — ubah, preview, validasi — yang akan kalian ulangi ratusan kali.
Sekarang mari tambahkan sumber kedua: Text file input untuk membaca file CSV. Atur nama file, lalu klik Get Fields untuk membiarkan Spoon menebak struktur dan tipe field dari baris pertama. Periksa hasil tebakan di tab Fields — perbaiki tipe yang salah, misalnya kolom harga yang dibaca sebagai String padahal seharusnya Number.
Pola umum yang perlu kalian kenali sejak awal: field mapping. Saat dua stream digabung atau ditulis ke target, Spoon mencocokkan nama field. Kalau nama field di sumber dan target berbeda, kalian perlu menormalkannya dengan step Select values (untuk memilih, menamai ulang, dan mengubah tipe field) atau Rename fields.
Tiga step transformasi berikut akan kalian pakai hampir setiap hari. Latih ketiganya di transformasi ini:
Filter rows memecah stream menjadi dua: baris yang memenuhi kondisi mengalir ke hop "true", sisanya ke hop "false". Contoh: pisahkan pesanan dengan jumlah di atas 100.000 menjadi satu cabang dan sisanya ke cabang lain. Ini adalah dasar routing bersyarat dalam aliran data.
Untuk menggabungkan dua stream berdasarkan kunci, gunakan Merge Join (mengharuskan kedua stream sudah terurut berdasarkan field kunci) atau Database lookup (mencari nilai tambahan dari database per baris). Contoh: gabungkan data pesanan dengan data pelanggan berdasarkan id_pelanggan agar laporan punya nama pelanggan.
Split Rows memecah satu field dengan delimiter menjadi beberapa baris. Contoh: field kategori berisi A,B,C bisa dipecah menjadi tiga baris terpisah. Kebalikannya dilakukan dengan Join rows atau Group by untuk agregasi.
Info
Bedakan Merge Join dan Database lookup: Merge Join menggabungkan dua stream di memori dan menuntut data terurut; Database lookup melakukan query ke database untuk tiap baris dan cocok untuk enrichment. Untuk volume besar, lookup dengan caching (di episode 8) jauh lebih cepat.
Setiap transformasi praktis pasti berakhir dengan output. Dua output yang paling umum:
Sebelum menulis ke tabel, pertimbangkan untuk menghapus dulu isi tabel lama dengan step Execute SQL script atau mengatur opsi Truncate table pada Table output — tergantung kebutuhan apakah data di-load incremental atau full replace.
Saat semua step terhubung, jalankan transformasi dengan tombol Run. Amati panel log dan Step Metrics: kalian akan melihat jumlah baris yang dibaca tiap step, kecepatan, dan waktu eksekusi.
Untuk memeriksa data di tengah aliran tanpa menjalankan seluruhnya, klik kanan pada hop atau step dan pilih Preview. Ini menjalankan transformasi sampai step tersebut lalu menampilkan sampel baris — cara paling cepat memvalidasi bahwa hasil sementara sudah benar.
Contoh menjalankan transformasi dari command line:
pan.sh -file=/home/kalian/lab/transformations/first_steps.ktrKalian akan melihat log eksekusi yang sama seperti di Spoon. Tambahkan -level=Basic atau -level=Detailed untuk mengontrol banyaknya detail log yang dicetak.
Success
Pola latihan yang paling efektif: baca data dari CSV, bersihkan dan normalisasi field, lalu tulis ke tabel PostgreSQL di lab. Setelah itu balik arahannya — baca dari database dan tulis ke CSV. Kemampuan bolak-balik ini menutup hampir semua kebutuhan ETL dasar.
Di episode 4 ini kalian merakit transformasi pertama: menambahkan step input, transformasi, dan output; memahami row stream dan field metadata; menggunakan Table input, Text file input, Filter rows, Merge Join, Split Rows, dan Table output; lalu menjalankan transformasi dan memeriksa preview.
Inti yang harus dibawa pulang:
Di episode 5, kita naik satu level: jobs & orchestration — membuat job yang mengatur urutan eksekusi transformasi, memakai step kontrol seperti Start, Transformation, Shell, FTP, dan Email, mengelola alur sukses/gagal, serta menjadwalkan eksekusi dengan Kitchen dan cron.