訂閱
糾錯
加入自媒體

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

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

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

明細表(寬表):

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

local_time2021-03-18 06:31:42

為了分析方便,可以事實表中的一個字段切割提取多個屬性出來構(gòu)成新的字段,因為字段變多了,所以稱為寬表,原來的成為窄表。

將上述的local_time字段擴展為如下6個字段:

yearmonthdayhourms20210318063142

又因為寬表的信息更加清晰明細,所以也可以稱之為明細表。

2.維度表

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

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

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

2. 維度建模三種模式

1. 星型模式

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

2. 雪花模式

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

雪花模式

3.星座模式

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

星座模型

3. 維度建模過程

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

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

維度建模四步走

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

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

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

2、聲明粒度

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

3、確認維度

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

4、確認事實

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

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

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

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

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

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

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

數(shù)據(jù)源層主要將各個業(yè)務數(shù)據(jù)導入到大數(shù)據(jù)平臺,作為業(yè)務數(shù)據(jù)的快照存儲。

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

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

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

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

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

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

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

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

數(shù)據(jù)應用層APP

數(shù)據(jù)應用層

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

最后

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


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

發(fā)表評論

0條評論,0人參與

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

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

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

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