Pengambilan Row ke-N

Pendahuluan

Artikel berikut ini bersumber dari pertanyaan di thread milis Pentaho-ID dimana kita ingin mengambil hanya row ke-N dari suatu sumber data. Untuk rinciannya pembaca bisa melihat di thread ini :
http://groups.google.com/group/pentaho-id/browse_frm/thread/c5c8a4eba1006b07?hl=id

Solusi 1 - Menggunakan Staging Step

Solusi pertama yang penulis buat adalah penggunaan step "antara" (staging) untuk membuat kolom tambahan yang menyatakan nomor urut baris, menyaring hanya nilai "1" yang menunjukkan baris pertama dan menghilangkan kembali kolom tambahan tersebut.

Detil dari tranformasi tersebut adalah sebagai berikut :
  • Download file teks region.txt pada bagian lampiran artikel ini dan letakkan file tersebut pada folder yang sama dengan transformasi yang Anda buat. Data pada file csv tampak seperti di bawah ini. Perhatikan file tersebut tidak memiliki header nama kolom.

    region.txt

    11,NANGGROE ACEH DARUSSALAM;
    1101,KAB. ACEH SELATAN;
    1102,KAB. ACEH TENGGARA;
    1103,KAB. ACEH TIMUR;
    1104,KAB. ACEH TENGAH;
    1105,KAB. ACEH BARAT;
    1106,KAB. ACEH BESAR;
    1107,KAB. PIDIE;


  • Tambahkan step CSV File Input (Input > CSV file input) dengan konfigurasi seperti pada gambar berikut.  Perhatikan karena tidak memiliki header kita akan mendapatkan dua field yaitu Field_000 dan Field_001 (yang didapatkan pada saat kita klik tombol Get Fields).


  • Tambahkan kolom nomor_urut dengan menggunakan step Add sequence (Transform > Add sequence).

  • Tambahkan step Filter rows (Flow > Filter rows) dengan konfigurasi berikut.

  • Hilangkan kembali kolom nomor_urut tersebut dengan step Select values (Transform > Select values).


  • Setelah semua langkah di atas dilakukan, coba preview step dari Select values dan harusnya kita cuma mendapatkan baris pertama dari sumber data kita.


  • Selesai

Solusi 2 : Menggunakan Javascript

Solusi kedua dari masalah ini menggunakan hanya satu step tambahan, yaitu step Modified javascript.

Detil dari tranformasi tersebut adalah sebagai berikut :
  • Download file teks region.txt pada bagian lampiran artikel ini dan letakkan file tersebut pada folder yang sama dengan transformasi yang Anda buat. Data pada file csv tampak seperti di bawah ini. Perhatikan file tersebut tidak memiliki header nama kolom.

    region.txt

    11,NANGGROE ACEH DARUSSALAM;
    1101,KAB. ACEH SELATAN;
    1102,KAB. ACEH TENGGARA;
    1103,KAB. ACEH TIMUR;
    1104,KAB. ACEH TENGAH;
    1105,KAB. ACEH BARAT;
    1106,KAB. ACEH BESAR;
    1107,KAB. PIDIE;


  • Tambahkan step CSV File Input (Input > CSV file input) dengan konfigurasi seperti pada gambar berikut.  Perhatikan karena tidak memiliki header kita akan mendapatkan dua field yaitu Field_000 dan Field_001 (yang didapatkan pada saat kita klik tombol Get Fields).

  • Tambahkan step Modified Java script value (Scripting > Modified Java script value) dan masukkan script berikut di bawah ini ke step tersebut. Disini kita memanipulasi konstanta trans_Status - yang akan menentukan dilanjutkan atau tidaknya flow dari transformation - dan menggunakan fungsi getProcessCount() untuk mengetahui jumlah row yang sudah diproses saat ini.



  • Preview step Modified Java script value tersebut. Harusnya akan tampak hasil seperti di bawah ini.


  • Selesai

Catatan :  Kedua contoh file transformation juga dapat di-download pada lampiran artikel ini.
ċ
pengambilan_row_1.ktr
(6k)
Webmaster PHI,
Aug 30, 2009, 11:55 PM
ċ
pengambilan_row_2.ktr
(4k)
Webmaster PHI,
Aug 30, 2009, 11:55 PM
ċ
region.txt
(0k)
Webmaster PHI,
Aug 30, 2009, 11:41 PM
Comments