BTC USD 81,021.5 Gold USD 4,378.12
Time now: Jun 1, 12:00 AM

Solution/Method Required : Data Cleanup (any language accepted)

mutanic

Super Active Member
Messages
5,538
Joined
May 24, 2009
Messages
5,538
Reaction score
213
Points
73
Salam sume, seperti tajuk di atas aku nak wat data cleanup, maksudnya akan ada process untuk check pastu wat cleanup kalu ada kriteria2 tertentu match, x kisah la bahasa apa korang pakai tapi aku nak tau konsep yang korang guna untuk achieve menda ni memandangkan data adalah berasal dari RAW data. Nanti aku try translate cara korang ke bahasa yang aku pakai (C# .Net) plak...

Contoh :

Aku ada masalah dari segi nak wat cleanup kat Customer Name, system akan generate report & ada sebahagian report akan group data/summary by Customer Name. Problem timbul bila RAW data mengandungi Customer Name yang hampir sama atau lebih tepat lagi Identical Value contoh :

Carigold Sdn. Bhd.
Carigold Sdn Bhd

Jika kita lihat perbezaan hanyalah pada tanda "." pada nama tersebut, namun perbezaan boleh juga berlaku bukan semata pada tanda "." sebaliknya karektor lain seperti "-" atau "'" atau "/" atau lain2 jenis karektor lagi.

Masalah Identical Value boleh up sehingga 2 level, 1 seperti yang aku terangkan seperti di atas.

Yang ke-2 adalah masalah Identical Value tapi kali ni melibatkan bukan sekadar karektor semata2 sebaliknya melibatkan tambahan 2nd name atau alias name seperti berikut :

Carigold Sdn. Bhd.
Carigold Sdn Bhd
Carigold Sdn. Bhd.(@ CG.com)

Korang peratikan nama tersebut sebenarnya merujuk pada Customer Name yang sama tetapi di sebabkan masalah data berasal sumber RAW (di kumpul dari berbagai rekod berlainan owner), secara logik system akan interprate sebagai 3 Customer Name yang berbeza.

So, apa langkah2 korang untuk tackle masalah camni?:-?:-?:-?

* aku nak rushing meeting jap berkenaan masalah camni~X(
*** idea/cadangan/pandangan korang semua amat di hargai:)cgrock:)cgrock:)cgrock:)cgrock
 
Salam sume, seperti tajuk di atas aku nak wat data cleanup, maksudnya akan ada process untuk check pastu wat cleanup kalu ada kriteria2 tertentu match, x kisah la bahasa apa korang pakai tapi aku nak tau konsep yang korang guna untuk achieve menda ni memandangkan data adalah berasal dari RAW data. Nanti aku try translate cara korang ke bahasa yang aku pakai (C# .Net) plak...

Contoh :

Aku ada masalah dari segi nak wat cleanup kat Customer Name, system akan generate report & ada sebahagian report akan group data/summary by Customer Name. Problem timbul bila RAW data mengandungi Customer Name yang hampir sama atau lebih tepat lagi Identical Value contoh :

Carigold Sdn. Bhd.
Carigold Sdn Bhd

Jika kita lihat perbezaan hanyalah pada tanda "." pada nama tersebut, namun perbezaan boleh juga berlaku bukan semata pada tanda "." sebaliknya karektor lain seperti "-" atau "'" atau "/" atau lain2 jenis karektor lagi.

Masalah Identical Value boleh up sehingga 2 level, 1 seperti yang aku terangkan seperti di atas.

Yang ke-2 adalah masalah Identical Value tapi kali ni melibatkan bukan sekadar karektor semata2 sebaliknya melibatkan tambahan 2nd name atau alias name seperti berikut :

Carigold Sdn. Bhd.
Carigold Sdn Bhd
Carigold Sdn. Bhd.(@ CG.com)

Korang peratikan nama tersebut sebenarnya merujuk pada Customer Name yang sama tetapi di sebabkan masalah data berasal sumber RAW (di kumpul dari berbagai rekod berlainan owner), secara logik system akan interprate sebagai 3 Customer Name yang berbeza.

So, apa langkah2 korang untuk tackle masalah camni?:-?:-?:-?

* aku nak rushing meeting jap berkenaan masalah camni~X(
*** idea/cadangan/pandangan korang semua amat di hargai:)cgrock:)cgrock:)cgrock:)cgrock

selain sdn. bhd. ni apa lagi masalah yang kau hadapi??

kalau aku lah..untuk solve masalah macam ni..aku akan split kan string tu kepada array..

then aku seragam kan..

carigold sdn bhd

algorithm

array(0) carigold
array(1) sdn
array(2) bhd

if (array(array.size-1) = "BHD" or array(i) = "BHD.")
set array(array.size-2) = "BHD" (ni ikut kita ar nak standardlize kan macam mana"

if (array(array.size-1) = "SDN" or array(i) = "SDN.")
set array(array.size-2) = "BHD" (ni ikut kita ar nak standardlize kan macam mana"

pastu run program and sort by name..tengok manual masalah apa lagi ada..tambah lagi algorithm..
 
Cara aku lak...

1. Ko isthiharkan dulu char yg tak boleh digunakan dlm nama kompeni pastu buang semua char ni dari nama (kalau perlu). Jika takut buang, masukkan nama yg terkena ni kat database lain dulu.

2. Istiharkan nama 'tambahan' mcm Sdn. Bhd. @ Sdn Bhd dan lain2..pastu buat function utk cari nama syarikat yg sama (tanpa nama tambahan). Kemudian mergekan.

3. Buat function lagi satu, supaya kalau nama2 ada simbol '@' hanya baca nama sebelum alias.
 
TQ Tuan2, mlm karang aku diskas balik...ada beberapa cadangan tu aku ada cuba gak sket sebenarnya tp bila melibatkan nama customer yang terdiri dari COMPANY(bukan PERSON) adalah cerewet sebenarnya jika RAW data di kumpul dari rekod berlainan owner(contoh Excel tracking/register/rekod file berlainan format bergantung pada owner file) melainkan data sepenuhnya di ambil dari company core database(lebih2 lagi bank) di mana kebanyakkan maklumat adalah solid...

Contoh cara user maintain nama customer x consistent :

F&N Sendirian Berhad
F&N Sdn. Bhd.
F&N S/B
F&N Sdn.Bhd
F&N Sdn Bhd(456468-P)
De'Palma Hotel
De' Palma Hotel
Pan Pacific Berhad
Pan Asia Pacific(formerly known as Pan-Pacific)
Hari-Hari Mau Berhad@Hari Hari Mau Bhd

Ikutkan hati aku nak jer force user untuk verify balik 7+++ data yang dah di migrate ke dalam system tu...senang sket keja aku xyah fikir menda ni sah2 depa kena verify+validate ngan Main Database balik dari system.(ada kena mengena ngan kod aku kat thread belajar .Net si Erazer tp real kod dah upgrade skrg & problem untuk tu dah solve)...tapi selagi user x verify+validate balik data2 tu selagi tulah report yang terhasil akan tunjuk data yang x tepat...

** ada bahagian yang aku boleh guna unique key/id untuk fix benda2 camni tp ada bahagian xleh guna unique key/id & terpaksa cari jalan lain seperti masalah ni...

*** nama2 company yang aku guna sebagai contoh ni aku hentam jer xda aku cilok dari mana2 company data

* abis meeting aku terus cabut balik sbb demam...
 
boleh guna regex, contoh guna php senang sikit guna perl regex.
#c regex.

$data = "F&N Sendirian Berhad";

$data = preg_replace("/Sendirian Berhad/","Sdn. Bhd.", $data);
$data = preg_replace("/Sdn. Bhd$/","Sdn. Bhd.", $data);
// buang co no
$data = preg_replace("/Bhd\(.*?\)/",Bhd.", $data);
$data = preg_replace("/Sdn\s/",Sdn.", $data);

Ikut logik sendiri2.. tapi mesti tetapkan rules, contoh kalau sendiri berhad mesti "Sdn. Bhd."
 
selain sdn. bhd. ni apa lagi masalah yang kau hadapi??

kalau aku lah..untuk solve masalah macam ni..aku akan split kan string tu kepada array..

then aku seragam kan..

carigold sdn bhd

algorithm

array(0) carigold
array(1) sdn
array(2) bhd

if (array(array.size-1) = "BHD" or array(i) = "BHD.")
set array(array.size-2) = "BHD" (ni ikut kita ar nak standardlize kan macam mana"

if (array(array.size-1) = "SDN" or array(i) = "SDN.")
set array(array.size-2) = "BHD" (ni ikut kita ar nak standardlize kan macam mana"

pastu run program and sort by name..tengok manual masalah apa lagi ada..tambah lagi algorithm..

Tuan, x semestinya Sdn. Bhd. atau Sdn Bhd tu jer, contoh nama kompeni camni :

A.B Company Sdn. Bhd.
AB Company Sdn. Bhd.

Problem gak nama camni, tapi berdasarkan cadangan yang di berikan untuk wat array pastu iterate & check kalu match ngan condition baru replace untuk standardize jadi Sdn. Bhd. menarik, sebenarnya aku ada buat dlm satu view yang mana aku cuba buat camni gak kecuali bezanya dlm XSLT/XSL hasilnya kurang memberansangkan sbb aku cuma cari karektor "." jer, contoh lebih kurang camni :

Code:
=REPLACE(REPLACE(REPLACE([Customer Name],SEARCH(".",[Customer Name]),1,""),SEARCH(".",REPLACE([Customer Name],SEARCH(".",[Customer Name]),1,"")),1,""),SEARCH(".",REPLACE(REPLACE([Customer Name],SEARCH(".",[Customer Name]),1,""),SEARCH(".",REPLACE([Customer Name],SEARCH(".",[Customer Name]),1,"")),1,"")),1,"")

Esok aku ubah sket mcm nko nyer contoh & aku nampak something nak kena explore dulu esok...view tu bertujuan untuk aku dapatkan mana2 duplicate customer sama exact/identical name so user boleh padamkan data yg duplicate...Ini 1st process yg kena apply untuk settle masalah Sdn. Bhd. yg x consistent tu...

Apa2 pun sebelum buat changes aku kena pastikan data dari main database adalah fix xleh di ubah, yg akan berubah cuma data yg di migrate dari RAW data user ke dalam system ja. Di sini aku boleh join konsep Tuan Pemimpin nnt...aku nampak process untuk wat cleanup ni akan memakan masa kalu di execute memandangkan nnt akan melibatkan gegelung nak iterate sume data2, maybe kena wat batch program nnt...

Bila settle bab integrity data yg di migrate nnt aku dah x perlu risau lagi masalah nama customer x consistent ni sbb aku set program untuk any additional of new record user kena browse/search through main database dulu, kalu ada nama customer tu baru bleh submit new record so naming tetap akan follow/match ngan main database.
 
Cara aku lak...

1. Ko isthiharkan dulu char yg tak boleh digunakan dlm nama kompeni pastu buang semua char ni dari nama (kalau perlu). Jika takut buang, masukkan nama yg terkena ni kat database lain dulu.

2. Istiharkan nama 'tambahan' mcm Sdn. Bhd. @ Sdn Bhd dan lain2..pastu buat function utk cari nama syarikat yg sama (tanpa nama tambahan). Kemudian mergekan.

3. Buat function lagi satu, supaya kalau nama2 ada simbol '@' hanya baca nama sebelum alias.

Tuan, langkah nko ni aku akan masukkan sebagai step ke-2 dlm process cleanup ni selepas langkah di atas sebagai step 1.

Yang no.2 & no.3 tu adalah partial lookup rite? aku ada try cara partial lookup for first 10 karektor & x sume dapat cleanup sbb ada berbeza bawah 10 karektor atau lebih dari 10 karektor baru beza, baik ada sdn bhd atau x sama ja...at least process camni berjaya kurangkan masalah duplicate customer sbb naming x consistent ni, nak dapat perfect maybe susah so aku planning camni :

1) mana2 data yg match - no changes made
2) data yg x match - changes made after step 1 & 2 (berjaya match so dapat detect duplicate) to user data
3) data yg x match - list kat satu paparan untuk user verify manually (mesti kena success manual verification baru tau duplicate atau x)
4) data yg x match - kalu x match, kat user ada nama customer tp main database xda so kena hold/exclude/tag with certain status for further action

maybe selepas step 1 & 2 tinggal sket jer data yg x match di no.4 tu...:-?
 
boleh guna regex, contoh guna php senang sikit guna perl regex.
#c regex.

$data = "F&N Sendirian Berhad";

$data = preg_replace("/Sendirian Berhad/","Sdn. Bhd.", $data);
$data = preg_replace("/Sdn. Bhd$/","Sdn. Bhd.", $data);
// buang co no
$data = preg_replace("/Bhd\(.*?\)/",Bhd.", $data);
$data = preg_replace("/Sdn\s/",Sdn.", $data);

Ikut logik sendiri2.. tapi mesti tetapkan rules, contoh kalau sendiri berhad mesti "Sdn. Bhd."

konsep lebih kurang cadangan pertama di atas, untuk sdn bhd maybe boleh setel tp untuk "nama" semata2 tu maybe kena check/count any special karektor, bila sampai detail camni maybe akan ada beberapa kebarangkalian yg boleh berlaku, kena test dulu...
 
haha.. aku hampir dpt kerja untuk masalah ni atas nama job database analysis..
aku x dpt kerja atu sebab programmer lama tu nak gak cari pengganti dia pakai java..

cam masalah kau try boleh guna kan char match mean ada brapa percent persamaannya..

kedua masalah kekadang perbezaan sebutan contoh;

contoh : mohd. rizal
ada sesetangah panggil mohammad rizal
ada punya lagi hampeh panggil moh lijal
padahal org yg sama..

tu cuma contoh..

jadi apa yg boleh buat terpaksa solution aku ialah terpaksa ko create table utk matchkan word tu.. 1st job kena manual la..

tu solution aku bg kat director tu.. dia setuju tp programmer lama dia x setuju sebab dia nk jugak org ganti dia pakai java...

huhuh.. terlepas kerja gaji 4.5k tu...
 
haha.. aku hampir dpt kerja untuk masalah ni atas nama job database analysis..
aku x dpt kerja atu sebab programmer lama tu nak gak cari pengganti dia pakai java..

cam masalah kau try boleh guna kan char match mean ada brapa percent persamaannya..

kedua masalah kekadang perbezaan sebutan contoh;

contoh : mohd. rizal
ada sesetangah panggil mohammad rizal
ada punya lagi hampeh panggil moh lijal
padahal org yg sama..

tu cuma contoh..

jadi apa yg boleh buat terpaksa solution aku ialah terpaksa ko create table utk matchkan word tu.. 1st job kena manual la..

tu solution aku bg kat director tu.. dia setuju tp programmer lama dia x setuju sebab dia nk jugak org ganti dia pakai java...

huhuh.. terlepas kerja gaji 4.5k tu...

consider ada 2 table, satu table main database & lagi satu table yg simpan data updated by user(memula kena migrate dulu existing data, yg ni dok wat ta!k skrg)~X(~X(~X(

4.5K??? fuhhh....untung gile kompeni aku camni, patut la bnyk dept asyik nak automate keja masing2 & dump kat aku untuk develop sub=internal system, kalu suruh vendor sah2 kena kapak dah...aku minta naik gaji pun susah nak dapat:((:((:((
 
Back
Top
Log in Register