本文由 發(fā)布,轉(zhuǎn)載請(qǐng)注明出處,如有問(wèn)題請(qǐng)聯(lián)系我們! 發(fā)布時(shí)間: 2021-05-16SparkSQL電商用戶(hù)畫(huà)像(四)之電商用戶(hù)畫(huà)像數(shù)據(jù)倉(cāng)庫(kù)建立
加載中六、 電商用戶(hù)畫(huà)像數(shù)據(jù)倉(cāng)庫(kù)建立
7.1 數(shù)據(jù)倉(cāng)庫(kù)準(zhǔn)備工作
為什么要對(duì)數(shù)據(jù)倉(cāng)庫(kù)分層?星型模型 雪花模型
User----->web界面展示指標(biāo)表
l 用空間換時(shí)間,通過(guò)大量的預(yù)處理來(lái)提升應(yīng)用系統(tǒng)的用戶(hù)體驗(yàn)(效率),因此數(shù)據(jù)倉(cāng)庫(kù)會(huì)存在大量冗余的數(shù)據(jù);
l 如果不分層的話(huà),如果源業(yè)務(wù)系統(tǒng)的業(yè)務(wù)規(guī)則發(fā)生變化將會(huì)影響整個(gè)數(shù)據(jù)清洗過(guò)程,工作量巨大
l 通過(guò)數(shù)據(jù)分層管理可以簡(jiǎn)化數(shù)據(jù)清洗的過(guò)程,因?yàn)榘言瓉?lái)一步的工作分到了多個(gè)步驟去完成,相當(dāng)于把一個(gè)復(fù)雜的工作拆成了多個(gè)簡(jiǎn)單的工作,把一個(gè)大的黑盒變成了一個(gè)白盒,每一層的處理邏輯都相對(duì)簡(jiǎn)單和容易理解,這樣我們比較容易保證每一個(gè)步驟的正確性,當(dāng)數(shù)據(jù)發(fā)生錯(cuò)誤的時(shí)候,往往我們只需要局部調(diào)整某個(gè)步驟即可。
數(shù)據(jù)倉(cāng)庫(kù)標(biāo)準(zhǔn)上可以分為四層:ODS(臨時(shí)存儲(chǔ)層)、PDW(數(shù)據(jù)倉(cāng)庫(kù)層)、MID(數(shù)據(jù)集市層)、APP(應(yīng)用層)
ODS層:
為臨時(shí)存儲(chǔ)層,是接口數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域,為后一步的數(shù)據(jù)處理做準(zhǔn)備。一般來(lái)說(shuō)ODS層的數(shù)據(jù)和源系統(tǒng)的數(shù)據(jù)是同構(gòu)的,主要目的是簡(jiǎn)化后續(xù)數(shù)據(jù)加工處理的工作。從數(shù)據(jù)粒度上來(lái)說(shuō)ODS層的數(shù)據(jù)粒度是最細(xì)的。ODS層的表通常包括兩類(lèi),一個(gè)用于存儲(chǔ)當(dāng)前需要加載的數(shù)據(jù),一個(gè)用于存儲(chǔ)處理完后的歷史數(shù)據(jù)。歷史數(shù)據(jù)一般保存3-6個(gè)月后需要清除,以節(jié)省空間。但不同的項(xiàng)目要區(qū)別對(duì)待,如果源系統(tǒng)的數(shù)據(jù)量不大,可以保留更長(zhǎng)的時(shí)間,甚至全量保存;
PDW層:
為數(shù)據(jù)倉(cāng)庫(kù)層,PDW層的數(shù)據(jù)應(yīng)該是一致的、準(zhǔn)確的、干凈的數(shù)據(jù),即對(duì)源系統(tǒng)數(shù)據(jù)進(jìn)行了清洗(去除了雜質(zhì))后的數(shù)據(jù)。這一層的數(shù)據(jù)一般是遵循數(shù)據(jù)庫(kù)第三范式的,其數(shù)據(jù)粒度通常和ODS的粒度相同。在PDW層會(huì)保存BI系統(tǒng)中所有的歷史數(shù)據(jù),例如保存10年的數(shù)據(jù)
MID層:
為數(shù)據(jù)集市層,這層數(shù)據(jù)是面向主題來(lái)組織數(shù)據(jù)的,通常是星形或雪花結(jié)構(gòu)的數(shù)據(jù)。從數(shù)據(jù)粒度來(lái)說(shuō),這層的數(shù)據(jù)是輕度匯總級(jí)的數(shù)據(jù),已經(jīng)不存在明細(xì)數(shù)據(jù)了。從數(shù)據(jù)的時(shí)間跨度來(lái)說(shuō),通常是PDW層的一部分,主要的目的是為了滿(mǎn)足用戶(hù)分析的需求,而從分析的角度來(lái)說(shuō),用戶(hù)通常只需要分析近幾年(如近三年的數(shù)據(jù))的即可。從數(shù)據(jù)的廣度來(lái)說(shuō),仍然覆蓋了所有業(yè)務(wù)數(shù)據(jù)。
APP層:
為應(yīng)用層,這層數(shù)據(jù)是完全為了滿(mǎn)足具體的分析需求而構(gòu)建的數(shù)據(jù),也是星形或雪花結(jié)構(gòu)的數(shù)據(jù)。從數(shù)據(jù)粒度來(lái)說(shuō)是高度匯總的數(shù)據(jù)。從數(shù)據(jù)的廣度來(lái)說(shuō),則并不一定會(huì)覆蓋所有業(yè)務(wù)數(shù)據(jù),而是MID層數(shù)據(jù)的一個(gè)真子集,從某種意義上來(lái)說(shuō)是MID層數(shù)據(jù)的一個(gè)重復(fù)。從極端情況來(lái)說(shuō),可以為每一張報(bào)表在APP層構(gòu)建一個(gè)模型來(lái)支持,達(dá)到以空間換時(shí)間的目的數(shù)據(jù)倉(cāng)庫(kù)的標(biāo)準(zhǔn)分層只是一個(gè)建議性質(zhì)的標(biāo)準(zhǔn),實(shí)際實(shí)施時(shí)需要根據(jù)實(shí)際情況確定數(shù)據(jù)倉(cāng)庫(kù)的分層,不同類(lèi)型的數(shù)據(jù)也可能采取不同的分層方法。
這里我們采用的是京東的數(shù)據(jù)倉(cāng)庫(kù)分層模式,是根據(jù)標(biāo)準(zhǔn)的模型演化而來(lái)。
數(shù)據(jù)倉(cāng)庫(kù)分層:
BDM:緩沖數(shù)據(jù),源數(shù)據(jù)的直接映像
FDM:基礎(chǔ)數(shù)據(jù)層,數(shù)據(jù)拉鏈處理、分區(qū)處理
GDM:通用聚合
ADM:高度聚合
先把數(shù)據(jù)從源數(shù)據(jù)庫(kù)中抽取加載到BDM層中,
然后FDM層根據(jù)BDM層的數(shù)據(jù)按天分區(qū)
7.2 數(shù)據(jù)倉(cāng)庫(kù)基本表介紹
BDM層數(shù)據(jù)表 (貼源緩存層)
|
訂單表
|
itcast_bdm_order |
訂單明細(xì)表
|
itcast_bdm_order_desc |
|
訂單商品表
|
itcast_bdm_order_goods |
|
用戶(hù)表
|
itcast_bdm_user |
|
購(gòu)物車(chē)表
|
itcast_bdm_order_cart |
|
用戶(hù)上網(wǎng)記錄表
|
itcast_bdm_user_pc_click_log itcast_bdm_user_app_click_log |
FDM層數(shù)據(jù)表 (拉鏈表、分區(qū)表)
|
用戶(hù)寬表 |
itcast_fdm_user_wide |
購(gòu)物車(chē)表 |
itcast_fdm_order_cart |
|
訂單表 |
itcast_fdm_order |
|
訂單表明細(xì)表 |
itcast_fdm_order_desc |
|
用戶(hù)app端view表 |
itcast_fdm_user_app_pageview |
|
用戶(hù)pc端view表 |
itcast_fdm_user_pc_pageview |
|
GDM層數(shù)據(jù)表 (通用數(shù)據(jù)模型層)
|
客戶(hù)基本屬性表 |
itcast_gdm_user_basic |
客戶(hù)消費(fèi)訂單表 |
itcast_gdm_user_consume_order |
|
訂單模型表 |
itcast_gdm_order |
|
客戶(hù)購(gòu)買(mǎi)類(lèi)目表 |
itcast_gdm_user_buy_category |
|
客戶(hù)訪(fǎng)問(wèn)信息表 |
itcast_gdm_user_visit |