首頁技術(shù)文章正文

ETL常見三類數(shù)據(jù)清洗的策略

更新時間:2021-06-08 來源:黑馬程序員 瀏覽量:

數(shù)據(jù)的清洗轉(zhuǎn)換是指將抽取到的數(shù)據(jù)源表中的數(shù)據(jù),根據(jù)數(shù)據(jù)倉庫系統(tǒng)模型的要求進行數(shù)據(jù)的清洗、轉(zhuǎn)換等操作,保證來自不同系統(tǒng)、不同格式數(shù)據(jù)的一致性和完整性,并且要按照業(yè)務(wù)要求加載到目標(biāo)表。數(shù)據(jù)的清洗轉(zhuǎn)換是ETL中最復(fù)雜的部分,主要任務(wù)是過濾掉不符合要求的數(shù)據(jù)。不符合要求的數(shù)據(jù)主要是有不完整的數(shù)據(jù)、錯誤的數(shù)據(jù)、重復(fù)的數(shù)據(jù)三大類。下面針對不符合要求的三大類數(shù)據(jù)進行詳細(xì)介紹。


1.不完整的數(shù)據(jù)

數(shù)據(jù)上報、接口調(diào)用時都會產(chǎn)生大量的不完整數(shù)據(jù),不完整數(shù)據(jù)的產(chǎn)生是不可避免的現(xiàn)象,而不完整的數(shù)據(jù)對大數(shù)據(jù)環(huán)境下的決策具有一定的影響。不完整數(shù)據(jù)主要包括缺失部分信息的數(shù)據(jù)。檢測不完整數(shù)據(jù)的方法具體如下。

缺失部分或全部內(nèi)容的數(shù)據(jù)主要是采用計算機和人工相結(jié)合的方法進行查找,并對缺失的內(nèi)容進行填充處理。不完整數(shù)據(jù)的清洗流程如圖所示。

不完整數(shù)據(jù)清洗

在上圖中,不完整數(shù)據(jù)的清洗流程主要分為3個步驟,具體如下。

(1)對獲得的數(shù)據(jù)源進行不完整數(shù)據(jù)的檢測,為后續(xù)的數(shù)據(jù)處理提供所需的數(shù)據(jù)。

(2)對檢測出來的不完整數(shù)據(jù)進行處理,如修復(fù)缺失部分或全部內(nèi)容的數(shù)據(jù)。

(3)輸出處理后的符合要求的完整數(shù)據(jù)。


2. 錯誤的數(shù)據(jù)

大數(shù)據(jù)環(huán)境下數(shù)據(jù)量的劇增使得獲取到的數(shù)據(jù)源會由于各種原因存在大量的錯誤數(shù)據(jù)。

錯誤數(shù)據(jù)產(chǎn)生的原因是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸人數(shù)據(jù)后沒有進行過濾判斷,而是直接將數(shù)據(jù)寫人后臺數(shù)據(jù)庫造成的,如數(shù)值數(shù)據(jù)輸成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面出現(xiàn)一個回車操作、日期格式不正確、日期越界等錯誤。錯誤數(shù)據(jù)的清洗流程如下圖所示。

錯誤數(shù)據(jù)清洗

在上圖中,錯誤數(shù)據(jù)的清洗流程主要分為3個步驟,具體如下。

(1)將數(shù)據(jù)源按照規(guī)定的數(shù)據(jù)格式進行檢測,并執(zhí)行數(shù)據(jù)預(yù)處理,為后續(xù)的處理步驟做準(zhǔn)備。

(2)對預(yù)處理后的數(shù)據(jù)進行一致性檢測,如果預(yù)處理后的數(shù)據(jù)與原始數(shù)據(jù)存在完整性不一致的問題,則通過數(shù)據(jù)修改過程使數(shù)據(jù)統(tǒng)一。為避免再次出現(xiàn)該問題,應(yīng)重復(fù)進行檢測與修改過程,直到符合要求為止。

(3)輸出修改后的數(shù)據(jù)。


3.重復(fù)的數(shù)據(jù)

產(chǎn)生重復(fù)的數(shù)據(jù)原因較多,如數(shù)據(jù)集成、系統(tǒng)重復(fù)錄人等,通常表現(xiàn)為多條記錄表達的含義相同,或同一目標(biāo)實體的記錄雖然在形式上有所不同,但其描述的目標(biāo)卻相同。這些重復(fù)記錄的數(shù)據(jù)特征并不明顯,但是對數(shù)據(jù)識別和數(shù)據(jù)清洗造成了很大的難度。因此,對重復(fù)記錄數(shù)據(jù)進行清洗,可以提高數(shù)據(jù)庫的使用率,降低系統(tǒng)消耗,并提高數(shù)據(jù)的質(zhì)量。

重復(fù)數(shù)據(jù)檢測主要分為基于字段和基于記錄的重復(fù)檢測?;谧侄蔚闹貜?fù)檢測算法主要為編輯距離算法基于記錄的重復(fù)檢測算法主要包括排序鄰居算法、優(yōu)先隊列算法、NGram聚類算法。采用排序合并算法清洗重復(fù)數(shù)據(jù)的流程如圖所示。

清除重復(fù)數(shù)據(jù)

在圖中,重復(fù)數(shù)據(jù)的清洗流程主要分為4個步驟,具體如下。

(1)通過對源數(shù)據(jù)庫屬性段的分析,找到屬性的唯-值,并根據(jù)唯值對源 數(shù)據(jù)庫中的數(shù)據(jù)記錄進行排序,可以選擇自上而下或者自下而上的順序排序。

(2)按順序掃描數(shù)據(jù)庫中的每一條記錄 ,并將它與相鄰的記錄進行比較,進行記錄的相似度匹配計算,輸出修改后的數(shù)據(jù)。

(3)如果計算出的相似度數(shù)值大于系統(tǒng)設(shè)定的閾值,說明該記錄或連續(xù)的幾條記錄為相似重復(fù)記錄,則進行數(shù)據(jù)記錄的合并或刪除操作;否則掃描下一條數(shù)據(jù)記錄,重復(fù)以上第(2)、(3)步驟。

(4)當(dāng)所有數(shù)據(jù)記錄檢測完畢后,輸出清洗后的數(shù)據(jù)結(jié)果。



猜你喜歡:

認(rèn)識Scala的數(shù)據(jù)類型

Hadoop實現(xiàn)join的幾種方法

HDFS存儲架構(gòu)

黑馬程序員python+大數(shù)據(jù)培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!