Mengerti, Mencari dan Menumbuhkan Cinta.

SQL Server Integration Services :(ETL) Fuzzy Lookup Transform Mencari Kata yang Mirip

Kita akan membahas mengenai fuzzy lookup transform, fuzzy lookup digunakan untuk sebuah kata yang berbeda, semisal kata merah dalam database utama. Dalam database lain mungkin penulisannya adalah "Merah" atau bahkan "mrh" atau apapun istilah yang digunakan untuk membentuk kata merah. Hal ini sering terjadi dalam berbagai macam database yang ada dalam perusahaan atau bahkan berada di cabang lain. Sehingga fuzzy lookup bisa digunakan untuk mengatasi perbedaan istilah ini. Fuzzy lookup tidak mencari exact match atau yang benar-benar sama tapi mencari yang mendekati, sehingga ada 2 properti yang harus kita kenali
  • Similarity : Kedekatan text yang dicari dengan referensi text yang ada
  • Confidence : Kualitas dari kedekatan(Seberapa dekat kata yang dicari dengan referensi)
Confidence yang tinggi berarti SSIS semakin yakin bahwa kata itu mirip semakin rendah confidence maka sebaliknya.






Semisal penomoran barang seperti "Barang 001" , dengan referensi yang ada "Barang 002" dan "Barang 003" meski ini adalah barang yang berbeda maka akan memunculkan hasil dengan similarity yang tinggi(High) dikarenakan banyak huruf dan angka yang sama dalam ketiga kata yang digunakan. Tetapi confidence yang dimiliki akan rendah(Low). Karena memang benar meski huruf dan angka ada yang sama tetapi 3 kata yang digunakan merepresentasikan barang yang berbeda. 
Contoh satu lagi adalah "Jalan" dan "Jln". Kedua kata ini akan menghasilkan sebuah similarity yang rendah(low) akan tetapi confidence yang dimiliki akan tinggi(High).
Fuzzy look up akan memberikan kedua hal ini selalu. Sekarang akan kita coba mempraktekan dengan menggunakan SSDT.

Jalankan SSDT kemudian ambil buat koneksi ADO.net  dengan sumber dari AdventureWorksLT2012 dan masukan fuzzy lookup dan tambahkan 1 flat file destination.Sambungkan ADO.net Source dengan fuzzy lookup lalu sambungkan fuzzy lookup pada flat file destination. Kamu akan memiliki data flow seperti berikut.
Tabel yang saya gunakan adalah tabel produk pada ADO NET Source, kemudian klik pada fuzzy lookup, pilih koneksi dan pilih tabel salesLT.product. Setelah selesai lihat tab yang ada di fuzzy lookup transform editor. Klik yang ada kemudian pilih semua garis dan hapus semua kemudian pasangkan kolom "Name" dan "ProductNumber", Caranya klik dari cell "Name" di kiri lalu drag ke cell "Name" kanan. Bila berhasil akan muncul garis titik-titik. Lakukan hal yang sama dengan product number. untuk saat ini akan fokus pada "Name" shingga jangan lupa meberikan centang pada cell name di kanan.


Layarmu harusnya memiliki gambaran seperti ini. Jangan di "OK" terlebih dahulu tetapi pilih tab advanced dan ubah similarity treshold menjadi 0.25. Ingat Similarity adalah kedekatan text yang dicari dengan referensi text yang ada 0 untuk tidak mirip sama sekali dan 1 untuk yang mirip total. Batasan 0.2 berarti di bila nilai kemiripan di bawah 0.2 maka tidak akan dianggap.

Berikutnya kita akan mengurus flat file destination. Sambungkan fuzzy lookup dengan flat file destination lalu double klik pada flat file destination, tekan mapping dan scroll kedua tabel yang muncul ke bawah pastikan kolom "Name (1)","Confidence", "Similarity", "_Similarity_Name",   "_Similarity_Product" yang di kiri dan di kanan terhubung. Tujuannya untuk menampilkan hasil nya di dalam flat file destination. Billa sudah kembali ke connection manager dan tekan update, lalu ubah tempat penyimpanan data agar mudah kamu temukan.

Perhatikan gambar di atas, Pada 317, LL Crankarm memiliki kesamaan dengan LL Crankset. Dengan tingkat kemiripan yang ada di samping. dimulai dengan similarity, confidence, similarity name dan similarity product. Sehingga 0.26735252 adalah tingkat similarity mengartikan kemiripan kedua barang ini hanya 25% sedangkan confidence 0.28728274 yang berarti keyakinan bahwa kedua benda ini mirip hanya 28% dan untuk similarity name 0.75413382 yang menandakan 75% nama product ini mirip. hal ini dapat kita lihat dari nama.

Mengenai penggunaan dalam contoh saya tidak tahu seberapa mirip. karena saya tidak mengenal semua data yang ada dalam database adventure works. Inilah sebab mengapa user perlu dilibatkan dalam membangun datawarehouse. Karena user yang menggunakan data dan mereka yang mengerti data.
 

Conditional Split  Untuk Masuk dalam Database

 
Kemudian jangan lupa untuk masukan semua ini dalam conditional split dahulu sebelum masuk ke database. Karena semua data akan dimasukan oleh default fuzzy lookup. Untuk Conditional split dapat ditemukan pada toolbar di kategori common.
 

 Masukan Conditional split setelah fuzzy lookup, karena pasti yang diinginkan masuk hanya yang mirip dan bukan 100% sama atau yang kemiripan mungkin di batas tertentu sesuai keinginan kita.


Dobel klik di Conditional Split dan akan dimasukan ke dalam sebuah editor. di sana bagian kiri atas akan ada column. Klik bagian confidence dan tarik ke dalam tabel di bawah(Condition) dan masukan batasan yang kamu inginkan. Seperti ini bentuknya

Untuk output name bisa berikan nama sesuai dengan kriteria yang kamu set supaya kamu bisa bedakan. kondisi yang saya set adalah meisahkan data dengan kemiripan 0.8 sebagai close match lalu kemiripan 0.8 hingga 0.4 sebagai check match. Setelah selesai masukan panah dari conditional split ke flat file destination, dan kamu bisa tentukan mana data yang ingin kamu simpan. Dengan begitu kamu tidak perlu memilah kembali satu per satu. Hasil akhirnya akan sperti gambar berikut







 
 
 


Komentar