前提概要
在數(shù)據(jù)爆炸的時(shí)代,我們每時(shí)每刻都在產(chǎn)生數(shù)據(jù)儒将;怎樣在海量數(shù)據(jù)中提煉出有價(jià)值的東西吏祸,這就需要我們有一雙火眼金晴;對(duì)于一個(gè)數(shù)據(jù)工作者來(lái)說(shuō)钩蚊,那就是對(duì)數(shù)據(jù)進(jìn)行清洗與集成贡翘。
具體的分為三步驟:
- 數(shù)據(jù)抽取、轉(zhuǎn)換與裝載
- 數(shù)據(jù)清洗
- 數(shù)據(jù)集成
下面我們將從這三個(gè)方面進(jìn)行分別講解砰逻。
數(shù)據(jù)抽取鸣驱、轉(zhuǎn)換與裝載
面向數(shù)據(jù)服務(wù)(或OLAP)應(yīng)用的數(shù)據(jù)庫(kù),一般不運(yùn)行特別復(fù)雜的數(shù)據(jù)分析任務(wù)蝠咆。為了對(duì)數(shù)據(jù)進(jìn)行分析踊东,我們從這些數(shù)據(jù)庫(kù)里抽取北滥、轉(zhuǎn)換和裝載(Extract, Transform and Load, ETL
)數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)中,進(jìn)而在它之上運(yùn)行復(fù)雜的分析負(fù)載闸翅,包括OLAP分析和數(shù)據(jù)挖掘再芋,從數(shù)據(jù)里挖掘模式和知識(shí),如下圖:
在這個(gè)過(guò)程中缎脾,如果從多個(gè)異構(gòu)的數(shù)據(jù)源ETL數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)中祝闻,而且這些數(shù)據(jù)源存在各種異構(gòu)性及不致性,那么就需要對(duì)數(shù)據(jù)進(jìn)行集成遗菠。所以联喘,數(shù)據(jù)集成是從多個(gè)數(shù)據(jù)源建立統(tǒng)一的數(shù)據(jù)禝的一種技術(shù)。
在進(jìn)行ETL操作時(shí)辙纬,如果數(shù)據(jù)源的數(shù)據(jù)質(zhì)量較差豁遭,在進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí),需要利用數(shù)據(jù)清洗技術(shù)贺拣,解決數(shù)據(jù)質(zhì)量問(wèn)題蓖谢。如果數(shù)據(jù)質(zhì)量得到保證,則無(wú)須數(shù)據(jù)請(qǐng)洗譬涡,數(shù)據(jù)的轉(zhuǎn)換操作就是比較簡(jiǎn)單的闪幽,比如進(jìn)行簡(jiǎn)單的規(guī)范化處理。
數(shù)據(jù)清洗
什么是數(shù)據(jù)清洗涡匀?
數(shù)據(jù)清洗是一種清除數(shù)據(jù)里面的錯(cuò)誤盯腌,去掉重復(fù)數(shù)據(jù)的技術(shù)。它可以集成在ETL過(guò)程中陨瘩,在從數(shù)據(jù)源建立數(shù)據(jù)倉(cāng)庫(kù)的過(guò)程中發(fā)揮作用腕够,也可以直接運(yùn)行在某個(gè)數(shù)據(jù)庫(kù)上,數(shù)據(jù)經(jīng)過(guò)清洗以后舌劳,最后還是保存到原來(lái)的數(shù)據(jù)庫(kù)里帚湘。
數(shù)據(jù)清洗的意義
基于準(zhǔn)確的數(shù)據(jù)(高質(zhì)量)進(jìn)行分析,才有可能得到可信的分析結(jié)果甚淡,基于這些結(jié)果才有可能做出正確的決策大诸,否則,在不準(zhǔn)確的數(shù)據(jù)上進(jìn)行分析贯卦,有可能導(dǎo)致錯(cuò)誤的認(rèn)識(shí)和決策底挫。據(jù)估計(jì),數(shù)據(jù)中的異常(Anomaly)和雜質(zhì)(Impurity)脸侥,一般占到數(shù)據(jù)總量的5%左右。
數(shù)據(jù)清洗往往和數(shù)據(jù)集成聯(lián)系在一起盈厘,當(dāng)從多個(gè)數(shù)據(jù)源進(jìn)行數(shù)據(jù)集成時(shí)睁枕,通過(guò)數(shù)據(jù)清洗技術(shù)、剔除數(shù)據(jù)中的錯(cuò)誤,以便獲得高質(zhì)量的數(shù)據(jù)外遇。
數(shù)據(jù)異常的不同類(lèi)型
數(shù)據(jù)清洗的目的是剔除數(shù)據(jù)中的異常注簿。數(shù)據(jù)中的異常可分為三類(lèi):語(yǔ)法類(lèi)異常(Syntactical)
,語(yǔ)義類(lèi)異常(Semantic)
,覆蓋類(lèi)異常(Coverage Anomaly)
- 語(yǔ)法類(lèi)異常
指的是表示實(shí)體的具體的數(shù)據(jù)值和格式的錯(cuò)誤跳仿。該類(lèi)異常具體可分為三種:
- 詞法錯(cuò)誤(Lexical Error)
指的是實(shí)際數(shù)據(jù)的結(jié)構(gòu)和指定的結(jié)構(gòu)不一致诡渴。
比如:在一張人員表中,每個(gè)實(shí)體有四個(gè)屬性菲语,分別是姓名妄辩、年齡、性別和身高山上,而某些記錄只有三個(gè)屬性眼耀,這就是語(yǔ)法異常。- 值域格式錯(cuò)誤(Domain Format Error)
指的是實(shí)體的某個(gè)屬性的取值不符合預(yù)期的值域中的某種格式佩憾。值域是數(shù)據(jù)的所有可能取值構(gòu)成的集合哮伟。
比如:姓名是字符串類(lèi)型,在名和姓之間有一個(gè)“妄帘,”楞黄,那么“John,Smith”是正確的值抡驼,“John Smith”則不是正確的值鬼廓。- 不規(guī)則的取值(Irregularity)
指的是對(duì)取值、單位和簡(jiǎn)稱(chēng)的使用不統(tǒng)一婶恼,不規(guī)范桑阶。
比如:?jiǎn)T工的工資字段有的用“元”作為單位,有的用“萬(wàn)元”作為單位勾邦。
- 語(yǔ)義類(lèi)異常
指數(shù)據(jù)不能全面蚣录、無(wú)重復(fù)地表示客觀世界的實(shí)體,該類(lèi)異常具體可分為四種:
- 違反完整性約束規(guī)則(Integrity Constraint Violation)眷篇。
指一個(gè)元組或幾個(gè)元組不符合(實(shí)體完整性萎河、參照完整性和用戶(hù)自定義完整性)完整性約束規(guī)則。
比如:我們規(guī)定中工工資字段必須大于0蕉饼,如果某個(gè)員工的工資小于0虐杯,就違反了完整性約束規(guī)則。- 數(shù)據(jù)中出現(xiàn)矛盾(Contradiction)昧港。
指的是一個(gè)元組的各個(gè)屬性取值擎椰,或者不同元組的各個(gè)屬性的取值違反這些取值的依賴(lài)關(guān)系。
比如:我們的賬單表里的賬單金額為商品總金額減去折扣金額创肥,但在數(shù)據(jù)庫(kù)某個(gè)賬單的實(shí)付金額不等于商品總金額減去折扣金額达舒,這就矛盾了值朋。- 數(shù)據(jù)的重復(fù)值(Duplicate)。
指的是兩個(gè)或者兩個(gè)以上的元組表示同一個(gè)實(shí)體巩搏。- 無(wú)效的元組(Invalid Tuple)昨登。
指的是某些元組沒(méi)有表示客觀世界的有效實(shí)體。
比如:?jiǎn)T工表中有一個(gè)員工贯底,名稱(chēng)叫“王超”丰辣,但是公司里并沒(méi)有這個(gè)人。
- 覆蓋類(lèi)異常
- 值的缺失(Missing Value)禽捆。指的是在進(jìn)行數(shù)據(jù)采集時(shí)就沒(méi)有采集到相應(yīng)的數(shù)據(jù)笙什。
- 元組的缺失(Missing Tuple)。指的是在客觀世界中睦擂,存在某些實(shí)體得湘,但是并沒(méi)有在數(shù)據(jù)庫(kù)通過(guò)元組表示出來(lái)。
數(shù)據(jù)質(zhì)量
數(shù)據(jù)質(zhì)量是一個(gè)比較寬泛的概念顿仇,它包含很多方面淘正;關(guān)于數(shù)據(jù)質(zhì)量的評(píng)價(jià)標(biāo)準(zhǔn),可以組織成一個(gè)層次結(jié)構(gòu)臼闻,上層數(shù)據(jù)質(zhì)量標(biāo)準(zhǔn)的得分是其子標(biāo)準(zhǔn)得分的一個(gè)綜合加權(quán)得分鸿吆。
- 正確性。指數(shù)據(jù)集里所有正確的取值相對(duì)于所有取值的比例
- 完整性(Integrity)述呐,可以再次分為:完備性和有效性惩淳;
- 一致性(Consistency),可以再次分為:模式符合性和統(tǒng)一性乓搬;
- 密度(Density),指的是所有元組里思犁,各個(gè)屬性上的缺失值占有應(yīng)該存在的所有屬性上的取值比例。
- 唯一性进肯。是指代表相同實(shí)體的重復(fù)元組占數(shù)據(jù)集里所有元組的比例激蹲。
數(shù)據(jù)清洗的任務(wù)和過(guò)程
數(shù)據(jù)清洗是剔除數(shù)據(jù)里的異常,使得數(shù)據(jù)集成為現(xiàn)實(shí)世界的準(zhǔn)確江掩、沒(méi)有重復(fù)的表示過(guò)程学辱。
數(shù)據(jù)清選的過(guò)程可以分為四個(gè)主要步驟:
- 數(shù)據(jù)審計(jì);
- 定義數(shù)據(jù)清洗工作流环形;
- 執(zhí)行數(shù)據(jù)清洗工作流策泣;
- 后續(xù)處理和控制;
數(shù)據(jù)清洗的具體方法
- 數(shù)據(jù)解析抬吟;
- 數(shù)據(jù)轉(zhuǎn)換萨咕;
- 實(shí)施完整性約束條件;
- 重復(fù)數(shù)據(jù)清除火本;
- 一些統(tǒng)計(jì)方法危队;
數(shù)據(jù)集成
什么是數(shù)據(jù)集成蓄喇?
在很多應(yīng)用場(chǎng)合,人們需要整合不同來(lái)源的數(shù)據(jù)交掏,才能獲取有效的分析結(jié)果,否則刃鳄,不完整的數(shù)據(jù)將導(dǎo)致分析結(jié)果不準(zhǔn)確盅弛。
數(shù)據(jù)集成是指把數(shù)據(jù)從多個(gè)數(shù)據(jù)源整合在一起,提供一個(gè)觀察這些數(shù)據(jù)的統(tǒng)一視圖的過(guò)程叔锐。
數(shù)據(jù)集成需要解決的問(wèn)題
數(shù)據(jù)集成要解決的首要問(wèn)題是各個(gè)數(shù)據(jù)源之間的異構(gòu)性(Heterogeneity)
即差異性
挪鹏。
數(shù)據(jù)源之間的異構(gòu)性體現(xiàn)在以下各方面:
- 數(shù)據(jù)管理系統(tǒng)的異構(gòu)性;
- 通信協(xié)議異構(gòu)性愉烙;
- 數(shù)據(jù)模式的異構(gòu)性讨盒;
- 數(shù)據(jù)類(lèi)型的異構(gòu)性;
- 取值的異構(gòu)性步责;
- 語(yǔ)義異構(gòu)性返顺;
數(shù)據(jù)集成的模式
我們有三種基本的策略進(jìn)行數(shù)據(jù)的集成,分別是聯(lián)邦數(shù)據(jù)庫(kù)(Federated Database)
蔓肯、數(shù)據(jù)倉(cāng)庫(kù)(Data Warehousing)
遂鹊、中介者(Mediation)
。
1. 聯(lián)邦數(shù)據(jù)庫(kù)模式
聯(lián)邦數(shù)據(jù)庫(kù)是最簡(jiǎn)單的數(shù)據(jù)集成模式蔗包,它需要在每對(duì)數(shù)據(jù)源之間創(chuàng)建映射(Mapping)
和轉(zhuǎn)換(Transform)
的軟件秉扑,該軟件稱(chēng)為包裝器(Wrapper)
。當(dāng)數(shù)據(jù)源X需要和數(shù)據(jù)源Y進(jìn)行通信和數(shù)據(jù)集成時(shí)调限,才需要建立X和Y之間的包裝器舟陆。
優(yōu)點(diǎn):如果我們有很多的數(shù)據(jù)源萧福,但是僅僅需要在少數(shù)幾個(gè)數(shù)據(jù)源之間進(jìn)行通信和集成腐芍,聯(lián)邦數(shù)據(jù)庫(kù)是最合算的一種模式;
缺點(diǎn):如果我們需要在很多的數(shù)據(jù)源之間進(jìn)行通信和數(shù)據(jù)交換赦抖,就需要建立大量的Wrapper;在n個(gè)數(shù)據(jù)源的情況下淘钟,最多需要建立(n(n-1))/2個(gè)Wrapper宦赠,這將是非常繁重的工作。如果有數(shù)據(jù)源變化米母,需要修改映射和轉(zhuǎn)換機(jī)制勾扭,對(duì)大量的Wrapper進(jìn)行更新,變得非常困難铁瞒。
2. 數(shù)據(jù)倉(cāng)庫(kù)模式
數(shù)據(jù)倉(cāng)庫(kù)是最通用的一種數(shù)據(jù)集成模式妙色,在數(shù)據(jù)倉(cāng)庫(kù)模式中,數(shù)據(jù)從各個(gè)數(shù)據(jù)源拷貝過(guò)來(lái)慧耍,經(jīng)過(guò)轉(zhuǎn)換身辨,然后存儲(chǔ)到一個(gè)目標(biāo)數(shù)據(jù)庫(kù)中丐谋。如下圖:
ETL:是 Extract, Transfrom, Load的縮寫(xiě),ETL過(guò)程在數(shù)據(jù)倉(cāng)庫(kù)之外完成煌珊,數(shù)據(jù)倉(cāng)庫(kù)負(fù)責(zé)存儲(chǔ)數(shù)據(jù)号俐,以備查詢(xún)。
- 數(shù)據(jù)倉(cāng)庫(kù)模式下定庵,數(shù)據(jù)集成過(guò)程即是一個(gè)ETL過(guò)程吏饿,它需要解決各個(gè)數(shù)據(jù)源之間的異構(gòu)性,不一致性蔬浙。
- 數(shù)據(jù)倉(cāng)庫(kù)模式下猪落,同樣的數(shù)據(jù)被復(fù)制了兩份:一份在數(shù)據(jù)源里;一份在數(shù)據(jù)倉(cāng)庫(kù)里畴博。如何及時(shí)更新數(shù)據(jù)倉(cāng)庫(kù)里的數(shù)據(jù)將是需要我考慮的問(wèn)題(全量更新笨忌、增量式更新)。
3. 中介者模式
數(shù)據(jù)集成的中介者模式俱病,如下圖:
- 中介者(Mediator)扮演的是數(shù)據(jù)源的
虛擬視圖
(Virtual View)的角色官疲,中介者本身不保存作保數(shù)據(jù),數(shù)據(jù)仍然保存在數(shù)據(jù)源中
庶艾。中介者維護(hù)一個(gè)虛擬的數(shù)據(jù)模式(Virtual Schema),它把各個(gè)數(shù)據(jù)源的數(shù)據(jù)模式組合起來(lái)袁余。 - 數(shù)據(jù)映射和傳輸在
查詢(xún)時(shí)刻
(Query Time)才真正發(fā)生。 - 當(dāng)用戶(hù)提交查詢(xún)時(shí)咱揍,查詢(xún)被轉(zhuǎn)換成對(duì)各個(gè)數(shù)據(jù)源的若干查詢(xún)颖榜。這些查詢(xún)分別發(fā)送到各個(gè)數(shù)據(jù)源,由各個(gè)數(shù)據(jù)源執(zhí)行這些查詢(xún)并返回結(jié)果煤裙。各個(gè)數(shù)據(jù)源返回的結(jié)果經(jīng)
合并
(Merge)后掩完,返回給最終用戶(hù)。