訂閱
糾錯(cuò)
加入自媒體

詳解數(shù)據(jù)倉庫建設(shè)體系

2021-03-18 09:51
園陌
關(guān)注

圖中的訂單表就是一個(gè)事實(shí)表,你可以理解他就是在現(xiàn)實(shí)中發(fā)生的一次操作型事件,我們每完成一個(gè)訂單,就會(huì)在訂單中增加一條記錄。事實(shí)表的特征:表里沒有存放實(shí)際的內(nèi)容,他是一堆主鍵的集合,這些ID分別能對(duì)應(yīng)到維度表中的一條記錄。事實(shí)表包含了與各維度表相關(guān)聯(lián)的外鍵,可與維度表關(guān)聯(lián)。事實(shí)表的度量通常是數(shù)值類型,且記錄數(shù)會(huì)不斷增加,表數(shù)據(jù)規(guī)模迅速增長。

明細(xì)表(寬表):

事實(shí)表的數(shù)據(jù)中,有些屬性共同組成了一個(gè)字段(糅合在一起),比如年月日時(shí)分秒構(gòu)成了時(shí)間,當(dāng)需要根據(jù)某一屬性進(jìn)行分組統(tǒng)計(jì)的時(shí)候,需要截取拼接之類的操作,效率極低。如:

local_time2021-03-18 06:31:42

為了分析方便,可以事實(shí)表中的一個(gè)字段切割提取多個(gè)屬性出來構(gòu)成新的字段,因?yàn)樽侄巫兌嗔耍苑Q為寬表,原來的成為窄表。

將上述的local_time字段擴(kuò)展為如下6個(gè)字段:

yearmonthdayhourms20210318063142

又因?yàn)閷挶淼男畔⒏忧逦骷?xì),所以也可以稱之為明細(xì)表。

2.維度表

每個(gè)維度表都包含單一的主鍵列。維度表的主鍵可以作為與之關(guān)聯(lián)的任何事實(shí)表的外鍵,當(dāng)然,維度表行的描述環(huán)境應(yīng)與事實(shí)表行完全對(duì)應(yīng)。維度表通常比較寬,是扁平型非規(guī)范表,包含大量的低粒度的文本屬性。

維度表示你要對(duì)數(shù)據(jù)進(jìn)行分析時(shí)所用的一個(gè)量,比如你要分析產(chǎn)品銷售情況, 你可以選擇按類別來進(jìn)行分析,或按區(qū)域來分析。每個(gè)類別就構(gòu)成一個(gè)維度。事實(shí)表的圖中的用戶表、商家表、時(shí)間表這些都屬于維度表,這些表都有一個(gè)唯一的主鍵,然后在表中存放了詳細(xì)的數(shù)據(jù)信息。

總的說來,在數(shù)據(jù)倉庫中不需要嚴(yán)格遵守規(guī)范化設(shè)計(jì)原則。因?yàn)閿?shù)據(jù)倉庫的主導(dǎo)功能就是面向分析,以查詢?yōu)橹鳎簧婕皵?shù)據(jù)更新操作。事實(shí)表的設(shè)計(jì)是以能夠正確記錄歷史信息為準(zhǔn)則,維度表的設(shè)計(jì)是以能夠以合適的角度來聚合主題內(nèi)容為準(zhǔn)則。

2. 維度建模三種模式

1. 星型模式

星形模式(Star Schema)是最常用的維度建模方式。星型模式是以事實(shí)表為中心,所有的維度表直接連接在事實(shí)表上,像星星一樣。星形模式的維度建模由一個(gè)事實(shí)表和一組維表成,且具有以下特點(diǎn):a. 維表只和事實(shí)表關(guān)聯(lián),維表之間沒有關(guān)聯(lián);b. 每個(gè)維表主鍵為單列,且該主鍵放置在事實(shí)表中,作為兩邊連接的外鍵;c. 以事實(shí)表為核心,維表圍繞核心呈星形分布;

2. 雪花模式

雪花模式(Snowflake Schema)是對(duì)星形模式的擴(kuò)展。雪花模式的維度表可以擁有其他維度表的,雖然這種模型相比星型更規(guī)范一些,但是由于這種模型不太容易理解,維護(hù)成本比較高,而且性能方面需要關(guān)聯(lián)多層維表,性能也比星型模型要低。所以一般不是很常用

雪花模式

3.星座模式

星座模式是星型模式延伸而來,星型模式是基于一張事實(shí)表的,而星座模式是基于多張事實(shí)表的,而且共享維度信息。前面介紹的兩種維度建模方法都是多維表對(duì)應(yīng)單事實(shí)表,但在很多時(shí)候維度空間內(nèi)的事實(shí)表不止一個(gè),而一個(gè)維表也可能被多個(gè)事實(shí)表用到。在業(yè)務(wù)發(fā)展后期,絕大部分維度建模都采用的是星座模式。

星座模型

3. 維度建模過程

我們知道維度建模的表類型有事實(shí)表,維度表;模式有星形模型,雪花模型,星座模型這些概念了,但是實(shí)際業(yè)務(wù)中,給了我們一堆數(shù)據(jù),我們怎么拿這些數(shù)據(jù)進(jìn)行數(shù)倉建設(shè)呢,數(shù)倉工具箱作者根據(jù)自身60多年的實(shí)際業(yè)務(wù)經(jīng)驗(yàn),給我們總結(jié)了如下四步,請務(wù)必記住!

數(shù)倉工具箱中的維度建模四步走:

維度建模四步走

請牢記以上四步,不管什么業(yè)務(wù),就按照這個(gè)步驟來,順序不要搞亂,因?yàn)檫@四步是環(huán)環(huán)相扣,步步相連。下面詳細(xì)拆解下每個(gè)步驟怎么做

1、選擇業(yè)務(wù)過程

維度建模是緊貼業(yè)務(wù)的,所以必須以業(yè)務(wù)為根基進(jìn)行建模,那么選擇業(yè)務(wù)過程,顧名思義就是在整個(gè)業(yè)務(wù)流程中選取我們需要建模的業(yè)務(wù),根據(jù)運(yùn)營提供的需求及日后的易擴(kuò)展性等進(jìn)行選擇業(yè)務(wù)。比如商城,整個(gè)商城流程分為商家端,用戶端,平臺(tái)端,運(yùn)營需求是總訂單量,訂單人數(shù),及用戶的購買情況等,我們選擇業(yè)務(wù)過程就選擇用戶端的數(shù)據(jù),商家及平臺(tái)端暫不考慮。業(yè)務(wù)選擇非常重要,因?yàn)楹竺嫠械牟襟E都是基于此業(yè)務(wù)數(shù)據(jù)展開的。

2、聲明粒度

先舉個(gè)例子:對(duì)于用戶來說,一個(gè)用戶有一個(gè)身份證號(hào),一個(gè)戶籍地址,多個(gè)手機(jī)號(hào),多張銀行卡,那么與用戶粒度相同的粒度屬性有身份證粒度,戶籍地址粒度,比用戶粒度更細(xì)的粒度有手機(jī)號(hào)粒度,銀行卡粒度,存在一對(duì)一的關(guān)系就是相同粒度。為什么要提相同粒度呢,因?yàn)榫S度建模中要求我們,在同一事實(shí)表中,必須具有相同的粒度,同一事實(shí)表中不要混用多種不同的粒度,不同的粒度數(shù)據(jù)建立不同的事實(shí)表。并且從給定的業(yè)務(wù)過程獲取數(shù)據(jù)時(shí),強(qiáng)烈建議從關(guān)注原子粒度開始設(shè)計(jì),也就是從最細(xì)粒度開始,因?yàn)樵恿6饶軌虺惺軣o法預(yù)期的用戶查詢。但是上卷匯總粒度對(duì)查詢性能的提升很重要的,所以對(duì)于有明確需求的數(shù)據(jù),我們建立針對(duì)需求的上卷匯總粒度,對(duì)需求不明朗的數(shù)據(jù)我們建立原子粒度。

3、確認(rèn)維度

維度表是作為業(yè)務(wù)分析的入口和描述性標(biāo)識(shí),所以也被稱為數(shù)據(jù)倉庫的“靈魂”。在一堆的數(shù)據(jù)中怎么確認(rèn)哪些是維度屬性呢,如果該列是對(duì)具體值的描述,是一個(gè)文本或常量,某一約束和行標(biāo)識(shí)的參與者,此時(shí)該屬性往往是維度屬性,數(shù)倉工具箱中告訴我們牢牢掌握事實(shí)表的粒度,就能將所有可能存在的維度區(qū)分開,并且要確保維度表中不能出現(xiàn)重復(fù)數(shù)據(jù),應(yīng)使維度主鍵唯一

4、確認(rèn)事實(shí)

事實(shí)表是用來度量的,基本上都以數(shù)量值表示,事實(shí)表中的每行對(duì)應(yīng)一個(gè)度量,每行中的數(shù)據(jù)是一個(gè)特定級(jí)別的細(xì)節(jié)數(shù)據(jù),稱為粒度。維度建模的核心原則之一是同一事實(shí)表中的所有度量必須具有相同的粒度。這樣能確保不會(huì)出現(xiàn)重復(fù)計(jì)算度量的問題。有時(shí)候往往不能確定該列數(shù)據(jù)是事實(shí)屬性還是維度屬性。記住最實(shí)用的事實(shí)就是數(shù)值類型和可加類事實(shí)。所以可以通過分析該列是否是一種包含多個(gè)值并作為計(jì)算的參與者的度量,這種情況下該列往往是事實(shí)。

實(shí)際業(yè)務(wù)中數(shù)倉分層

數(shù)倉分層要結(jié)合公司業(yè)務(wù)進(jìn)行,并且需要清晰明確各層職責(zé),要保證數(shù)據(jù)層的穩(wěn)定又要屏蔽對(duì)下游影響,一般采用如下分層結(jié)構(gòu):

數(shù)據(jù)分層架構(gòu)數(shù)據(jù)層具體實(shí)現(xiàn)

使用四張圖說明每層的具體實(shí)現(xiàn)

數(shù)據(jù)源層ODS

數(shù)據(jù)源層

數(shù)據(jù)源層主要將各個(gè)業(yè)務(wù)數(shù)據(jù)導(dǎo)入到大數(shù)據(jù)平臺(tái),作為業(yè)務(wù)數(shù)據(jù)的快照存儲(chǔ)。

數(shù)據(jù)明細(xì)層DW

數(shù)據(jù)明細(xì)層

事實(shí)表中的每行對(duì)應(yīng)一個(gè)度量,每行中的數(shù)據(jù)是一個(gè)特定級(jí)別的細(xì)節(jié)數(shù)據(jù),稱為粒度。要記住的是同一事實(shí)表中的所有度量必須具有相同的粒度。

維度表一般都是單一主鍵,少數(shù)是聯(lián)合主鍵,注意維度表不要出現(xiàn)重復(fù)數(shù)據(jù),否則和事實(shí)表關(guān)聯(lián)會(huì)出現(xiàn)數(shù)據(jù)發(fā)散問題。

有時(shí)候往往不能確定該列數(shù)據(jù)是事實(shí)屬性還是維度屬性。記住最實(shí)用的事實(shí)就是數(shù)值類型和可加類事實(shí)。所以可以通過分析該列是否是一種包含多個(gè)值并作為計(jì)算的參與者的度量,這種情況下該列往往是事實(shí);如果該列是對(duì)具體值的描述,是一個(gè)文本或常量,某一約束和行標(biāo)識(shí)的參與者,此時(shí)該屬性往往是維度屬性。但是還是要結(jié)合業(yè)務(wù)進(jìn)行最終判斷是維度還是事實(shí)。

數(shù)據(jù)輕度匯總層DM

數(shù)據(jù)輕度匯總層

此層命名為輕匯總層,就代表這一層已經(jīng)開始對(duì)數(shù)據(jù)進(jìn)行匯總,但是不是完全匯總,只是對(duì)相同粒度的數(shù)據(jù)進(jìn)行關(guān)聯(lián)匯總,不同粒度但是有關(guān)系的數(shù)據(jù)也可進(jìn)行匯總,此時(shí)需要將粒度通過聚合等操作進(jìn)行統(tǒng)一。

數(shù)據(jù)應(yīng)用層APP

數(shù)據(jù)應(yīng)用層

數(shù)據(jù)應(yīng)用層的表就是提供給用戶使用的,數(shù)倉建設(shè)到此就接近尾聲了,接下來就根據(jù)不同的需求進(jìn)行不同的取數(shù),如直接進(jìn)行報(bào)表展示,或提供給數(shù)據(jù)分析的同事所需的數(shù)據(jù),或其他的業(yè)務(wù)支撐。

最后

技術(shù)是為業(yè)務(wù)服務(wù)的,業(yè)務(wù)是為公司創(chuàng)造價(jià)值的,離開業(yè)務(wù)的技術(shù)是無意義的。所以數(shù)倉的建設(shè)與業(yè)務(wù)是息息相關(guān)的,公司的業(yè)務(wù)不同,數(shù)倉的建設(shè)也是不同的,只有適合的才是最好的。


<上一頁  1  2  3  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請輸入評(píng)論內(nèi)容...

請輸入評(píng)論/評(píng)論長度6~500個(gè)字

您提交的評(píng)論過于頻繁,請輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)