仔仔細(xì)細(xì)的給您講,如何建立數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)倉(cāng)庫(kù)的定位
在整個(gè)數(shù)據(jù)價(jià)值生產(chǎn)鏈路中,數(shù)據(jù)倉(cāng)庫(kù)的主要作用就是中心化分發(fā),將原始數(shù)據(jù)與數(shù)據(jù)價(jià)值挖掘活動(dòng)隔離。所有的原始數(shù)據(jù)都會(huì)進(jìn)入數(shù)據(jù)倉(cāng)庫(kù),再由數(shù)據(jù)倉(cāng)庫(kù)統(tǒng)一分發(fā)給下游的數(shù)據(jù)使用者。這樣的結(jié)構(gòu)實(shí)現(xiàn)了原始數(shù)據(jù)與數(shù)據(jù)分析工作的解耦,讓業(yè)務(wù)活動(dòng)可以專注于生產(chǎn),也讓數(shù)據(jù)價(jià)值挖掘可以專注于分析。
且不談數(shù)據(jù)倉(cāng)庫(kù)對(duì)數(shù)據(jù)做了怎樣的處理,光是把數(shù)據(jù)集中到一起再分發(fā),本身就已經(jīng)提升了整個(gè)數(shù)據(jù)價(jià)值生產(chǎn)鏈路的運(yùn)轉(zhuǎn)效率了。反過(guò)來(lái)說(shuō),只要做到了數(shù)據(jù)的中心化分發(fā),隔離業(yè)務(wù)與數(shù)據(jù)生產(chǎn),就實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單的數(shù)據(jù)倉(cāng)庫(kù),它滿足了數(shù)據(jù)倉(cāng)庫(kù)定義中的第一條:集成。
?

數(shù)據(jù)平臺(tái)系統(tǒng)
在最原始的時(shí)候,數(shù)據(jù)生產(chǎn)工作是很簡(jiǎn)單地直接使用一些數(shù)據(jù)表來(lái)做計(jì)算,甚至可能連數(shù)據(jù)庫(kù)都沒(méi)有,就是一些表格而已,分析師可能就是每天手動(dòng)匯總?cè)缓蟪鲆恍﹫?bào)表來(lái)輔助領(lǐng)導(dǎo)做出決策。 如果分析師覺(jué)得這樣每天重復(fù)工作的效率太低,他們就會(huì)朝著「自動(dòng)化」的方向前進(jìn),構(gòu)建起一個(gè)個(gè)數(shù)據(jù)系統(tǒng)。
給每日定時(shí)定量的任務(wù)加上任務(wù)調(diào)度系統(tǒng),實(shí)現(xiàn)每日工作的自動(dòng)化;建立數(shù)據(jù)管道,讓原始數(shù)據(jù)通過(guò)管道自動(dòng)變成數(shù)據(jù)分析所需要的報(bào)表形式;建立質(zhì)量管控系統(tǒng),自動(dòng)處理臟亂數(shù)據(jù)并監(jiān)測(cè)錯(cuò)誤率等指標(biāo),確保數(shù)據(jù)質(zhì)量。
如果分析師們希望讓數(shù)據(jù)更容易使用,他們就會(huì)朝著「易使用」的方向前進(jìn),構(gòu)建起一個(gè)個(gè)數(shù)據(jù)產(chǎn)品。所謂的「易使用」,也可以說(shuō)成是「產(chǎn)品化」。最直接的方法莫過(guò)于建立一個(gè)數(shù)據(jù)倉(cāng)庫(kù)了。正如上面所說(shuō),光是實(shí)現(xiàn)數(shù)據(jù)的中心化分發(fā),隔離業(yè)務(wù)生產(chǎn)與數(shù)據(jù)生產(chǎn),就已經(jīng)能讓數(shù)據(jù)好用不少。
除了數(shù)據(jù)倉(cāng)庫(kù)之外,為了能讓整個(gè)團(tuán)隊(duì)更好地使用和理解數(shù)據(jù),我們也需要進(jìn)行元數(shù)據(jù)管理工作。數(shù)據(jù)產(chǎn)品最后的形態(tài)就是各種報(bào)表了,匯總了各項(xiàng)重要信息,能夠快速了解業(yè)務(wù)系統(tǒng)的整體現(xiàn)狀以便做出下一步?jīng)Q策。 「自動(dòng)化」和「易使用」兩個(gè)方向的發(fā)展,匯聚在一起就成了數(shù)據(jù)平臺(tái)系統(tǒng)。這個(gè)系統(tǒng)既依賴于「自動(dòng)化」的程度來(lái)保證穩(wěn)定高效的運(yùn)轉(zhuǎn),也依賴于「產(chǎn)品化」的程度來(lái)保證用戶能夠方便快捷地挖掘數(shù)據(jù)價(jià)值,指導(dǎo)業(yè)務(wù)決策。
盡管在實(shí)際實(shí)踐中,數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)往往都伴隨著一定的自動(dòng)化工作,但這只是為了讓數(shù)據(jù)倉(cāng)庫(kù)更為高效。從最本質(zhì)的角度來(lái)說(shuō),「讓數(shù)據(jù)更好用」,才是數(shù)據(jù)倉(cāng)庫(kù)建設(shè)的核心目標(biāo),下面就對(duì)這一點(diǎn)來(lái)展開(kāi)說(shuō)明。
數(shù)據(jù)使用的痛點(diǎn)
在現(xiàn)實(shí)的實(shí)踐中,往往是先開(kāi)始發(fā)展業(yè)務(wù),然后有了數(shù)據(jù)團(tuán)隊(duì)來(lái)直接對(duì)原始的業(yè)務(wù)數(shù)據(jù)做處理分析,輔助業(yè)務(wù)決策。隨著業(yè)務(wù)規(guī)模的增長(zhǎng)和復(fù)雜度的增加,原始的方法漸漸扛不住了。比如,數(shù)據(jù)源很多,需要分別提取。業(yè)務(wù)數(shù)據(jù)存在一些錯(cuò)亂的情況,取數(shù)后還需要做檢查和清洗。整體的工作效率受到了很大影響。這時(shí)候數(shù)據(jù)團(tuán)隊(duì)就會(huì)說(shuō),這個(gè)數(shù)據(jù)系統(tǒng)不好用,有許多痛點(diǎn),需要做出改變。于是大家就想起了數(shù)據(jù)倉(cāng)庫(kù),希望它能夠解決問(wèn)題。
?

就讓我們來(lái)梳理一下,細(xì)化之后都有哪些痛點(diǎn)。
P0 基礎(chǔ)
在這個(gè)層級(jí)上的痛點(diǎn),會(huì)極大地影響整個(gè)數(shù)據(jù)價(jià)值鏈條的運(yùn)轉(zhuǎn),要么嚴(yán)重降低效率,要么破壞分析的準(zhǔn)確性。因此,只要是打算挖掘數(shù)據(jù)價(jià)值,無(wú)論是否建立狹義上的數(shù)據(jù)倉(cāng)庫(kù),都必須要解決這個(gè)層級(jí)上的痛點(diǎn)。
數(shù)據(jù)異構(gòu):數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)庫(kù)或文件系統(tǒng)上,在使用前必須先進(jìn)行匯總,當(dāng)表很多很零散的時(shí)候,處理起來(lái)非常不方便。這個(gè)痛點(diǎn)對(duì)效率帶來(lái)的影響,會(huì)隨著表數(shù)量的增長(zhǎng)而呈指數(shù)上升。如果不管不顧,最后很可能讓分析處理工作陷入?yún)R總泥潭。
臟數(shù)據(jù):錯(cuò)值、空值、意義不明的業(yè)務(wù)代碼、同一實(shí)體多個(gè)別名等等,這些都會(huì)對(duì)分析產(chǎn)生巨大的干擾。正所謂「垃圾進(jìn),垃圾出」,為了保證分析結(jié)果的正確性,臟數(shù)據(jù)是必須處理干凈。
所有的數(shù)據(jù)團(tuán)隊(duì),只要在正常輸出數(shù)據(jù)價(jià)值,都會(huì)解決這些痛點(diǎn)。將數(shù)據(jù)匯總到統(tǒng)一的數(shù)據(jù)庫(kù)中供分析使用,在進(jìn)行分析前對(duì)數(shù)據(jù)進(jìn)行清洗,這就已經(jīng)是數(shù)據(jù)倉(cāng)庫(kù)的雛形了。
P1 進(jìn)階
在這個(gè)層級(jí)上的痛點(diǎn),主要體現(xiàn)為數(shù)據(jù)的使用難度大,學(xué)習(xí)成本高。往往正是因?yàn)檫@個(gè)層級(jí)的痛點(diǎn)無(wú)法通過(guò)簡(jiǎn)單的修補(bǔ)方式解決,需要一套完整系統(tǒng)的方案,數(shù)據(jù)團(tuán)隊(duì)才會(huì)想要建立一個(gè)傳統(tǒng)意義上的數(shù)據(jù)倉(cāng)庫(kù)。
強(qiáng)耦合:同一實(shí)體的數(shù)據(jù)混雜分散在不同的源數(shù)據(jù)表里,難以直接使用。比如,希望按品牌分析商品的品類占比。但商品的品類和品牌信息都不在商品表中,而是在訂單表里。每次使用都需要從訂單表中提取相應(yīng)的數(shù)據(jù),極其費(fèi)事。這種情況在實(shí)踐中非常常見(jiàn),原因有很多,比如來(lái)自爬蟲(chóng)的數(shù)據(jù)會(huì)受到可爬取接口的限制。
?

復(fù)雜結(jié)構(gòu):存在多重聯(lián)結(jié)或者樹(shù)形結(jié)構(gòu)等較復(fù)雜的設(shè)計(jì),SQL難寫(xiě),查詢效率也不高。樹(shù)形結(jié)構(gòu)常用于業(yè)務(wù)生產(chǎn),對(duì)單點(diǎn)讀寫(xiě)來(lái)說(shuō)是一種高效的結(jié)構(gòu),但對(duì)于分析場(chǎng)景來(lái)說(shuō)就非常不方便。
實(shí)體關(guān)系模糊:數(shù)據(jù)表無(wú)法直接體現(xiàn)要分析的業(yè)務(wù)過(guò)程,需要提煉加工。比如希望分析對(duì)比不同流量入口的業(yè)務(wù)表現(xiàn),但實(shí)際存儲(chǔ)的數(shù)據(jù)可能會(huì)很零散,第一個(gè)大問(wèn)題就是確定都有哪些流量入口,哪些指標(biāo)可以體現(xiàn)業(yè)務(wù)水平。接著的問(wèn)題就是,怎么把業(yè)務(wù)表現(xiàn)與流量入口關(guān)聯(lián)起來(lái)。像強(qiáng)耦合、復(fù)雜結(jié)構(gòu)這樣的問(wèn)題還能通過(guò)技術(shù)解決。實(shí)體關(guān)系模糊的問(wèn)題就需要深入理解業(yè)務(wù)了。錯(cuò)誤的理解可能會(huì)導(dǎo)致錯(cuò)誤的關(guān)聯(lián),這一點(diǎn)會(huì)極大加重新人的工作負(fù)擔(dān)。
難以上手:數(shù)據(jù)表繁雜,新人難以理解使用。雜亂無(wú)章的數(shù)據(jù)表帶來(lái)的一大問(wèn)題就是交接困難,新人面對(duì)一大堆表,尤其是缺乏良好命名的表,根本就一頭霧水不知道如何下手。如果再缺失相應(yīng)的文檔,那簡(jiǎn)直就是災(zāi)難。
粒度混亂:同一個(gè)數(shù)據(jù)表里,數(shù)據(jù)的粒度不同。舉例:地理位置信息,可能會(huì)把市級(jí)數(shù)據(jù)和省級(jí)數(shù)據(jù)放在同一個(gè)表里。粒度混亂會(huì)給分析帶來(lái)非常大的麻煩。對(duì)于那些包含業(yè)務(wù)指標(biāo)的數(shù)據(jù),如果無(wú)法確定這個(gè)指標(biāo)的統(tǒng)計(jì)口徑是按天還是按周,就不知道該如何進(jìn)行分析。對(duì)于像省市信息這樣的數(shù)據(jù),缺乏統(tǒng)一的數(shù)據(jù)粒度,也會(huì)讓使用者在關(guān)聯(lián)這張表時(shí)不得不增加一些篩選操作,比如希望獲取省一級(jí)的信息,就需要過(guò)濾掉市一級(jí)的信息以免混淆。粒度混亂雖然不復(fù)雜,但卻是很容易被忽略的一個(gè)問(wèn)題,往往會(huì)因?yàn)榻y(tǒng)計(jì)口徑的不統(tǒng)一造成嚴(yán)重的分析錯(cuò)誤。
?

P2 優(yōu)化
在這個(gè)層級(jí)上的痛點(diǎn),就屬于有點(diǎn)痛,但湊合湊合也能用的水準(zhǔn)。處理他們的急迫性沒(méi)那么大,不過(guò)要是有時(shí)間做了,還是能帶來(lái)一些回報(bào)的。
查詢緩慢:查詢緩慢可以說(shuō)是最常見(jiàn)的優(yōu)化類痛點(diǎn)了。引起緩慢的問(wèn)題有很多,比如索引或分區(qū)設(shè)置不合理,SQL沒(méi)優(yōu)化好,表結(jié)構(gòu)不適合分析場(chǎng)景,或者存儲(chǔ)的數(shù)據(jù)庫(kù)本身的大規(guī)模查詢能力就比較薄弱等等。提升查詢效率也是個(gè)需要不斷迭代優(yōu)化的工作,它不是那么緊迫但也同樣重要。
關(guān)聯(lián)過(guò)深:在實(shí)體-關(guān)系模型中,如果嚴(yán)格遵守3NF范式構(gòu)建,很容易出現(xiàn)關(guān)聯(lián)過(guò)深的問(wèn)題。也就是想要使用一個(gè)實(shí)體的數(shù)據(jù)必須要聯(lián)結(jié)3張以上的表才能觸達(dá),而這些中間關(guān)聯(lián)表的數(shù)據(jù)完全不會(huì)用上。這個(gè)問(wèn)題不那么重要,分析師湊合一下也能用,不過(guò)肯定還是希望能通過(guò)一層關(guān)聯(lián)來(lái)獲取,更為方便。
P3 拓展
這個(gè)層級(jí)上的痛點(diǎn)往往是特異化的,它不會(huì)影響一般的通用業(yè)務(wù),但對(duì)于特定需求,是必須解決的。
缺少歷史:當(dāng)前的數(shù)據(jù)不能代表歷史情況,這樣的數(shù)據(jù)無(wú)法做出有效分析,只能得到錯(cuò)誤結(jié)論。為此就需要做一些特殊設(shè)計(jì)來(lái)實(shí)現(xiàn)。只是,有時(shí)候做分析并不需要所有維度的歷史信息,這樣的需求是比較特異化的,可以按需開(kāi)發(fā)。
特殊需求:像大寬表、輕聚合表等,它們并不是數(shù)據(jù)倉(cāng)庫(kù)的核心構(gòu)件,但對(duì)于下游使用有很大幫助,比如節(jié)約計(jì)算資源,方便接入報(bào)表工具等等。
免責(zé)聲明:本公眾號(hào)所發(fā)布的文章為本公眾號(hào)原創(chuàng),或者是在網(wǎng)絡(luò)搜索到的優(yōu)秀文章進(jìn)行的編輯整理,文章版權(quán)歸原作者所有,僅供讀者朋友們學(xué)習(xí)、參考。對(duì)于分享的非原創(chuàng)文章,有些因?yàn)闊o(wú)法找到真正來(lái)源,如果標(biāo)錯(cuò)來(lái)源或者對(duì)于文章中所使用的圖片、鏈接等所包含但不限于軟件、資料等,如有侵權(quán),請(qǐng)直接聯(lián)系后臺(tái),說(shuō)明具體的文章,后臺(tái)會(huì)盡快刪除。給您帶來(lái)的不便,深表歉意。