申請免費試用、咨詢電話:400-8352-114
文章來源:泛普軟件
目前,基于數(shù)據(jù)倉庫的商業(yè)智能應用已經(jīng)成為國內(nèi)許多企業(yè)的IT規(guī)劃項目,并受到
企業(yè)管理層的關注。作為商業(yè)智能的基礎,數(shù)據(jù)質(zhì)量的好壞是影響商業(yè)智能應用效果的關鍵,但由于企業(yè)的信息化經(jīng)過長期的積累和發(fā)展,數(shù)據(jù)質(zhì)量參差不齊,臟數(shù)據(jù)的存在阻礙了商業(yè)智能應用的進程,下面將重點談談如何讓臟數(shù)據(jù)改頭換面。
數(shù)據(jù)的“往事”
臟數(shù)據(jù)是指源系統(tǒng)中的數(shù)據(jù)不在給定的范圍內(nèi)或?qū)τ趯嶋H業(yè)務毫無意義,或是數(shù)據(jù)格式非法,以及在源系統(tǒng)中存在不規(guī)范的編碼和含糊的業(yè)務邏輯。
臟數(shù)據(jù)的存在主要是由于源系統(tǒng)的設計不夠嚴密造成的。主要表現(xiàn)為:數(shù)據(jù)格式錯誤,數(shù)據(jù)不一致,數(shù)據(jù)重復、錯誤,業(yè)務邏輯的不合理,違反業(yè)務規(guī)則等。例如,未經(jīng)驗證的身份證號碼、未經(jīng)驗證的日期字段等,還有賬戶開戶日期晚于用戶銷戶日期、交易處理的操作員號不存在、性別超過取值范圍等。此外,也有因為源系統(tǒng)基于性能的考慮,放棄了外鍵約束,從而導致數(shù)據(jù)不一致的結(jié)果。
目前,大多數(shù)的銀行業(yè)務系統(tǒng)的輸入界面是采用COBOL語言或C語言開發(fā)的,界面處理功能不是很強,一些要素被設計成“輸入”而不是“選擇”,如企業(yè)客戶的信用等級被設計成輸入,輸入的正確與否完全由操作員的理解決定,這也是臟數(shù)據(jù)產(chǎn)生的原因之一。例如,如果被設計成“選擇”就不會出現(xiàn)把AAA輸成“1”或其他了?! ?
轉(zhuǎn)換與清洗的實例
下面以銀行業(yè)務系統(tǒng)的客戶的惟一標識—客戶號為例來講解如何轉(zhuǎn)換與清洗數(shù)據(jù)。
客戶信息的處理是整個數(shù)據(jù)抽取、轉(zhuǎn)換、清洗和裝載(ETL)工作中最復雜的部分。目前業(yè)務系統(tǒng)中常見的客戶信息處理的難點主要有以下兩個方面。
客戶的惟一標識混亂
銀行的客戶號一般由證件類型與證件號組成,這里就有一個問題,如果客戶有多種證件怎么辦?或者說某個客戶辦了移民,有了新的身份,系統(tǒng)中怎樣體現(xiàn)出他是同一個客戶?這些問題,除了少部分是由于發(fā)證機關造成的(如身份證重號),大部分是由于操作人員的操作不規(guī)范造成的。主要表現(xiàn)在以下三個方面。
A、客戶身份證號問題
最常見的問題是客戶的身份證從15位更換為18位。首先操作人員只要能輸入新的客戶號,就認為是一個新的客戶;其次,即使操作員知道客戶的身份證升位了,但在銀行的客戶信息中,客戶號是惟一標識,如果對惟一標識進行更新,作為增量反映到目標系統(tǒng)中,但沒有記錄原客戶號,對于目標系統(tǒng)來說就是一條新記錄,而刪除原有的客戶信息在實際操作中可能是不允許或做不到的,因為在這個客戶號上可能還掛了許多賬戶,即便物理刪除了這條客戶記錄,也不可能作為增量數(shù)據(jù)傳輸?shù)椒治鱿到y(tǒng),因為這條數(shù)據(jù)確實已經(jīng)不存在了。
所以在實際的業(yè)務操作中只是簡單地增加一條客戶信息,新開的賬戶就掛在新的客戶信息上,這樣業(yè)務系統(tǒng)中就登記了兩條客戶信息。
在ETL處理時,對上面這種情況一般都直接轉(zhuǎn)換為18位,但在首次全量處理時,必須通過比較姓名來真實證明兩條記錄是同一個客戶。增量處理時需要同樣的處理。這樣做需要更多的系統(tǒng)時間。
第二個客戶身份證號問題是15位身份證號中有字母。如數(shù)字“0”被誤寫為字母“O”。
第三個客戶身份證號問題是長度不為15位與18位。
第四個客戶身份證號問題是同一身份證多個客戶號。
身份證號問題在ETL時要生成異??蛻粜畔⒂涗浳募俳挥蓸I(yè)務部門處理,如把原15位身份證上掛接的賬戶重新掛接到18位上,刪除15位的客戶信息,刪除錯誤的客戶信息,重新錄入正確的客戶信息,并進行賬戶掛接。
B、多種證件問題
多種證件也會導致一名客戶有多個客戶號,技術上沒有能力來發(fā)現(xiàn),只有依靠業(yè)務人員來收集、更新維護信息。如果通過建新表來保存這種關系,將增加數(shù)據(jù)處理、查詢的難度。
C、其他問題。有些賬戶上沒有客戶信息或虛編了客戶號,比如1999年11月以前開設的賬戶,沒有客戶可以掛接,于是隨意設了客戶號,在匯總統(tǒng)計時要注意區(qū)分這種情況。
多數(shù)據(jù)源導致多客戶信息
由于客觀原因,銀行可能有許多分散獨立的業(yè)務系統(tǒng),沒有做到完全的集中,這些系統(tǒng)中都有客戶信息。
多數(shù)據(jù)源導致多客戶信息,同一客戶在不同系統(tǒng)中有不同的數(shù)據(jù)描述,或者詳細程度不同,在一些系統(tǒng)中甚至可能沒有明確的客戶代碼與客戶信息。在處理時,主要根據(jù)客戶信息的詳細程度與更新時間來考慮,并確定一個信息修改的原則。
首先我們把來自最大的數(shù)據(jù)源——核心業(yè)務系統(tǒng)的客戶信息作為基礎,這些信息數(shù)據(jù)量大,雖然有很全面的數(shù)據(jù)結(jié)構(gòu),但大部分的字段內(nèi)容為空,而來自個人信貸系統(tǒng)、銀行卡系統(tǒng)等的客戶信息數(shù)據(jù)量相對較少,有詳細的內(nèi)容,正常情況下客戶記錄應該是核心業(yè)務系統(tǒng)的一個子集。數(shù)據(jù)倉庫系統(tǒng)應該綜合所有系統(tǒng)的客戶信息,客戶記錄數(shù)應該是并集,客戶記錄字段應該是一些重要字段的并集。
然后確定不同數(shù)據(jù)源有公共字段的修改順序。首先按信息的修改時間來判斷,但最新的信息修改不一定有最全面的信息,如在柜面開戶,核心系統(tǒng)僅錄入了身份證與姓名,沒有錄入地址等其他公共字段信息,而個人信貸系統(tǒng)或卡系統(tǒng)雖然建立的時間比較早,但有較全面的信息,不能用核心系統(tǒng)信息直接更新。所以公共字段的修改原則是在源數(shù)據(jù)與目標數(shù)據(jù)的字段不為空的情況下,以最新的信息為準。但這樣做要耗費大量的系統(tǒng)資源,特別是在做全量數(shù)據(jù)初始化時,好在客戶信息變化的頻率不是很高,在實際全量數(shù)據(jù)初始化時往往是確定一個順序,例如,以核心業(yè)務系統(tǒng)信息為基礎,銀行卡信息覆蓋核心業(yè)務系統(tǒng)信息,然后再用貸款信息覆蓋。
增量處理時一種折衷的方法是,在目標系統(tǒng)中記錄客戶信息的來源系統(tǒng),如果來自貸款系統(tǒng),則不能用其他系統(tǒng)的增量信息更新,只能用貸款系統(tǒng)的增量信息更新,而貸款系統(tǒng)的信息可以修改來自其他系統(tǒng)的信息。
實施經(jīng)驗:轉(zhuǎn)換與清洗的時機
一般來說,轉(zhuǎn)換與清洗發(fā)生在數(shù)據(jù)抽取之后,一些轉(zhuǎn)換與清洗可以在抽取的同時去做。對于一些相對不繁忙的業(yè)務系統(tǒng),如個人信貸系統(tǒng),由于不是24小時運行,在每天完成正常的數(shù)據(jù)處理后,仍有很多時間空閑,在數(shù)據(jù)卸載時可以進行轉(zhuǎn)換與清洗,這樣做能夠減少數(shù)據(jù)倉庫的負載量。需要注意的是,不能對源系統(tǒng)進行清洗,因為源系統(tǒng)數(shù)據(jù)正確性的標準可能與目標系統(tǒng)不一樣,對源系統(tǒng)的數(shù)據(jù)進行任何的修改與刪除都是不允許的。當然源系統(tǒng)清理自身錯誤的數(shù)據(jù)對加快數(shù)據(jù)抽取會有好處。
數(shù)據(jù)清洗的六個步驟
數(shù)據(jù)倉庫領域的權威W.H.Inmon博士把數(shù)據(jù)清洗的過程分為六個步驟:
步驟一:元素化(將非標準的數(shù)據(jù)統(tǒng)一格式化成數(shù)據(jù)元素)。
步驟二:標準化(將元素標準化,根據(jù)數(shù)據(jù)字典消除不一致的縮寫等)。
步驟三:校驗(對標準化的元素進行一致性校驗,即在內(nèi)容上修改錯誤)。
步驟四:匹配(在其他記錄中尋找相似的記錄,發(fā)現(xiàn)重復異常)。
步驟五:消除重復記錄(根據(jù)匹配結(jié)果進行處理,可以刪除部分記錄或者把多個記錄合并為一個更完整信息的記錄)。
步驟六:檔案化(將結(jié)果寫入元數(shù)據(jù)存儲中心。這樣可以更好地進行后續(xù)的清理過程,使得用戶容易理解數(shù)據(jù)庫以及更好地進行切片、切塊等操作)。(ccw)