Aggregate and Reupdate Source 2


Pendahuluan

Artikel ini adalah modifikasi penyelesaian dari artikel "Aggregate and Reupdate Source" sebelumnya. Untuk pembaca disarankan membaca terlebih dahulu artikel tersebut untuk mendapatkan deskripsi dan domain permasalahan secara lebih jelas.

Hasil yang diharapkan sekarang adalah untuk semua row dengan key yang sama, update nilai field dengan pergerakan maksimum terakhir (gambar).

Solusi untuk hal ini jelas menggunakan cursor / row based dan bukan set based dengan perintah SQL. Berikut ini adalah salah satu solusi yang ditawarkan dengan logika sebagai berikut :
  • Ambil semua field dari table_a dan tambahkan dengan field konstan "satu" - dengan nilai 1.
  • Buat dua percabangan aliran data dengan hasil berikut :
    • Satu cabang untuk mencari nilai maksimum dari key yang ada (kode1), kita namakan nilainya max_temp
    • Satu cabang untuk melakukan filter row dimana field_1 bernilai 0
  • Gabung / join dua percabangan tersebut dengan key kode_1
  • Lakukan penjumlahan kumulatif terhadap field konstanta "satu" yang sebelumnya kita definisikan dengan key kode_1. Ini tujuannya untuk mendapatkan pergerakan counter "grouping fields" yang tepat. Misalkan field ini kita namakan cum_field1
  • Jumlahkan  cum_field1 dan max_temp untuk mendapatkan nilai pergerakan maksimum row per row. Misalnya kita namakan field tersebut dengan hasil_final
  • Update kembali ke table_a nilai field_1 dengan hasil_final dengan key kode_1 dan kode_2
  • Selesai

Solusi di Kettle

  • Tambahkan dan namakan step-step berikut ke dalam ruang kerja di Spoon (Kettle versi 3.2) :
    • table_a (Input > Table Input)
    • Mencari Maksimum (Statistics > Group By)
    • Mengambil field_1 = 0 (Flow > Filter Rows)
    • Merge Join (Joins > Merge Join)
    • Cumulative Sum (Statistics > Group By)
    • Calculator (Transform > Calculator)
    • Update (Output > Update)
  • Susun semua step tersebut seperti pada gambar berikut.



  • Detil SQL statement pada step "table_a"



  • Detil dan konfigurasi pada step "Mencari Maksimum"



  • Detil dan konfigurasi pada step "Mengambil field_1 = 0"



  • Detil dan konfigurasi pada step "Merge Join"



  • Detil dan konfigurasi pada step "Cumulative Sum"



  • Detil perhitungan pada step "Calculator"



  • Detil dan konfigurasi pada step "Update"



  • Selesai

File contoh transformation di atas dapat Anda download pada bagian lampiran di artikel ini.
ċ
aggregate_and_reupdate_2.ktr
(10k)
Feris Thia,
Sep 1, 2009, 9:30 PM
Comments