【總結(jié)】維度數(shù)據(jù)建模過(guò)程及舉例

數(shù)據(jù)倉(cāng)庫(kù)2.png

1. 摘要

本文介紹數(shù)據(jù)倉(cāng)庫(kù)中維度數(shù)據(jù)建模的過(guò)程描述柿估,并舉一個(gè)示例以加深對(duì)相關(guān)概念的理解高职。

2. 內(nèi)容

2.1 維度模型定義

維度模型是數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域大師Ralph Kimall所倡導(dǎo)周拐,他的《數(shù)據(jù)倉(cāng)庫(kù)工具箱》遗增,是數(shù)據(jù)倉(cāng)庫(kù)工程領(lǐng)域最流行的數(shù)倉(cāng)建模經(jīng)典执解。維度建模以分析決策的需求出發(fā)構(gòu)建模型屏镊,構(gòu)建的數(shù)據(jù)模型為分析需求服務(wù)依疼,因此它重點(diǎn)解決用戶如何更快速完成分析需求,同時(shí)還有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能而芥。

2.2 維度建模過(guò)程

第一步:選擇業(yè)務(wù)過(guò)程

1律罢、通過(guò)對(duì)業(yè)務(wù)需求以及可用數(shù)據(jù)源的綜合考慮,確定對(duì)哪種業(yè)務(wù)過(guò)程開(kāi)展建模工作

2、建立的第一個(gè)維度模型應(yīng)該是一個(gè)最有影響的模型——它應(yīng)該對(duì)最緊迫的業(yè)務(wù)問(wèn)題作出回答误辑,并且對(duì)數(shù)據(jù)的抽取來(lái)說(shuō)是最容易的沧踏。

第二步:定義粒度

注:粒度是指數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)單位中保存數(shù)據(jù)的細(xì)化或綜合程度的級(jí)別,細(xì)化程度越高巾钉,粒度就越小

1翘狱、應(yīng)該先優(yōu)先考慮為業(yè)務(wù)處理獲取最有原子性的信息而開(kāi)發(fā)維度模型。原子型數(shù)據(jù)是所收集的最詳細(xì)的信息砰苍,這樣的數(shù)據(jù)不能再做更進(jìn)一步的細(xì)分潦匈。

2、數(shù)據(jù)倉(cāng)庫(kù)幾乎總是要求在每個(gè)維度可能得到的最低粒度上對(duì)數(shù)據(jù)進(jìn)行表示的原因赚导,并不是因?yàn)椴樵兿肟吹矫總€(gè)低層次的行茬缩,而是因?yàn)椴樵兿M院芫_的方式對(duì)細(xì)節(jié)知識(shí)進(jìn)行抽取。

第三步:選定維度

一個(gè)經(jīng)過(guò)仔細(xì)考慮的粒度定義確定了事實(shí)表的基本維度特性吼旧。同時(shí)凰锡,經(jīng)常也可能向事實(shí)表的基本粒度加入更多的維度,而這些附加的維度會(huì)在基本維度的每個(gè)組合值方面自然地取得唯一的值圈暗。如果附加的維度因?yàn)閷?dǎo)致生成另外的事實(shí)行而違背了這個(gè)基本的粒度定義掂为,那么必須對(duì)粒度定義進(jìn)行修改以適應(yīng)這個(gè)維度的情景。

第四步:確定事實(shí)

確定將哪些事實(shí)放到事實(shí)表中员串。粒度聲明有助于穩(wěn)定相關(guān)的考慮勇哗。事實(shí)必須與粒度吻合。在考慮可能存在的事實(shí)時(shí)寸齐,可能會(huì)發(fā)現(xiàn)仍然需要調(diào)整早期的粒度聲明和維度選擇

2.3 維度建模的基本要素

維度建模中有一些比較重要的概念智绸,理解了這些概念,基本也就理解了什么是維度建模访忿。

1. 事實(shí)表

發(fā)生在現(xiàn)實(shí)世界中的操作型事件瞧栗,其所產(chǎn)生的可度量數(shù)值,存儲(chǔ)在事實(shí)表中海铆。從最低的粒度級(jí)別來(lái)看迹恐,事實(shí)表行對(duì)應(yīng)一個(gè)度量事件,反之亦然卧斟。

額殴边,看了這一句,其實(shí)是不太容易理解到底什么是事實(shí)表的珍语。

比如一次購(gòu)買(mǎi)行為我們就可以理解為是一個(gè)事實(shí)锤岸,下面我們上示例。

圖中的訂單表就是一個(gè)事實(shí)表板乙,你可以理解他就是在現(xiàn)實(shí)中發(fā)生的一次操作型事件是偷,我們每完成一個(gè)訂單拳氢,就會(huì)在訂單中增加一條記錄。

我們可以回過(guò)頭再看一下事實(shí)表的特征蛋铆,在維度表里沒(méi)有存放實(shí)際的內(nèi)容馋评,他是一堆主鍵的集合,這些ID分別能對(duì)應(yīng)到維度表中的一條記錄刺啦。

2. 維度表

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

我們的圖中的用戶表、商家表再来、時(shí)間表這些都屬于維度表,這些表都有一個(gè)唯一的主鍵磷瘤,然后在表中存放了詳細(xì)的數(shù)據(jù)信息芒篷。

2.4 維度建模過(guò)程舉例

下面我們將以電商為例,詳細(xì)講一下維度建模的建模方式采缚,并舉例如果使用這個(gè)模型(這點(diǎn)還是很重要的)针炉。

一、業(yè)務(wù)場(chǎng)景

假設(shè)我們?cè)谝患译娚叹W(wǎng)站工作扳抽,比如某寶篡帕、某東。我們需要對(duì)這里業(yè)務(wù)進(jìn)行建模贸呢。下面我們分析幾點(diǎn)業(yè)務(wù)場(chǎng)景:

  1. 電商網(wǎng)站中最典型的場(chǎng)景就是用戶的購(gòu)買(mǎi)行為镰烧。
  2. 一次購(gòu)買(mǎi)行為的發(fā)起需要有這幾個(gè)個(gè)體的參與:購(gòu)買(mǎi)者、商家楞陷、商品怔鳖、購(gòu)買(mǎi)時(shí)間、訂單金額固蛾。
  3. 一個(gè)用戶可以發(fā)起很多次購(gòu)買(mǎi)的動(dòng)作结执。

好,基于這幾點(diǎn)艾凯,我們來(lái)設(shè)計(jì)我們的模型献幔。

二、模型設(shè)計(jì)

下面就是我們?cè)O(shè)計(jì)出來(lái)的數(shù)據(jù)模型趾诗,和之前的基本一樣蜡感,只不過(guò)是換成了英文,主要是為了后面寫(xiě)sql的時(shí)候來(lái)用。

我就不再解釋每個(gè)表的作用了铸敏,現(xiàn)在只說(shuō)一下為什么要這樣設(shè)計(jì)缚忧。

首先,我們想一下杈笔,如果我們不這樣設(shè)計(jì)的話闪水,我們一般會(huì)怎么做?

如果是我蒙具,我會(huì)設(shè)計(jì)下面這張表球榆。你信不信,我能列出來(lái)50個(gè)字段禁筏!其實(shí)我個(gè)人認(rèn)為怎么設(shè)計(jì)這種表都有其合理性持钉,我們不論對(duì)錯(cuò),單說(shuō)一下兩者的優(yōu)缺點(diǎn)篱昔。

先說(shuō)我們的維度模型:

  1. 數(shù)據(jù)冗余忻壳俊(因?yàn)楹芏嗑唧w的信息都存在相應(yīng)的維度表中了,比如用戶信息就只有一份)
  2. 結(jié)構(gòu)清晰(表結(jié)構(gòu)一目了然)
  3. 便于做OLAP分析(數(shù)據(jù)分析用起來(lái)會(huì)很開(kāi)心)
  4. 增加使用成本州刽,比如查詢時(shí)要關(guān)聯(lián)多張表
  5. 數(shù)據(jù)不一致空执,比如用戶發(fā)起購(gòu)買(mǎi)行為的時(shí)候的數(shù)據(jù),和我們維度表里面存放的數(shù)據(jù)不一致

再說(shuō)我們這張大款表的優(yōu)缺點(diǎn):

  1. 業(yè)務(wù)直觀穗椅,在做業(yè)務(wù)的時(shí)候辨绊,這種表特別方便,直接能對(duì)到業(yè)務(wù)中匹表。
  2. 使用方便门坷,寫(xiě)sql的時(shí)候很方便。
  3. 數(shù)據(jù)冗余巨大袍镀,真的很大默蚌,在幾億的用戶規(guī)模下,他的訂單行為會(huì)很恐怖
  4. 粒度僵硬苇羡,什么都寫(xiě)死了敏簿,這張表的可復(fù)用性太低。

三宣虾、使用示例

數(shù)據(jù)模型的建立必須要為更好的應(yīng)用來(lái)服務(wù)惯裕,下面我先舉一個(gè)例子,來(lái)切實(shí)地感受一下來(lái)怎么用我們的模型绣硝。

需求:求出2016年在帝都的男性用戶購(gòu)買(mǎi)的LV品牌商品的總價(jià)格蜻势。

實(shí)現(xiàn)

  SELECT
    SUM(order.money)
  FROM
    order,
    product,
    date,
    address,
    user,
  WHERE
    date.year = '2016'
    AND user.sex = 'male'
    AND address.province = '帝都'
    AND product.name = 'LV'

四、總結(jié)

維度建模是一種十分優(yōu)秀的建模方式鹉胖,他有很多的優(yōu)點(diǎn)握玛,但是我們?cè)趯?shí)際工作中也很難完全按照它的方式來(lái)實(shí)現(xiàn)够傍,都會(huì)有所取舍,比如說(shuō)為了業(yè)務(wù)我們還是會(huì)需要一些寬表挠铲,有時(shí)候還會(huì)有很多的數(shù)據(jù)冗余冕屯。

3. 參考

  1. 《Hadoop構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)實(shí)踐》

  2. 漫談數(shù)據(jù)倉(cāng)庫(kù)之維度建模
    https://zhuanlan.zhihu.com/p/27426819

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拂苹,隨后出現(xiàn)的幾起案子安聘,更是在濱河造成了極大的恐慌,老刑警劉巖瓢棒,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浴韭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡脯宿,警方通過(guò)查閱死者的電腦和手機(jī)念颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)连霉,“玉大人榴芳,你說(shuō)我怎么就攤上這事《搴常” “怎么了窟感?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)财边。 經(jīng)常有香客問(wèn)我,道長(zhǎng)点骑,這世上最難降的妖魔是什么酣难? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮黑滴,結(jié)果婚禮上憨募,老公的妹妹穿的比我還像新娘。我一直安慰自己袁辈,他們只是感情好菜谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著晚缩,像睡著了一般尾膊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荞彼,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天冈敛,我揣著相機(jī)與錄音,去河邊找鬼鸣皂。 笑死抓谴,一個(gè)胖子當(dāng)著我的面吹牛暮蹂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播癌压,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仰泻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了滩届?” 一聲冷哼從身側(cè)響起集侯,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丐吓,沒(méi)想到半個(gè)月后浅悉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡券犁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年术健,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘衬。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荞估,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚新,到底是詐尸還是另有隱情勘伺,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布褂删,位于F島的核電站飞醉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屯阀。R本人自食惡果不足惜缅帘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望难衰。 院中可真熱鬧钦无,春花似錦、人聲如沸盖袭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鳄虱。三九已至弟塞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拙已,已是汗流浹背宣肚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悠栓,地道東北人霉涨。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓按价,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笙瑟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子楼镐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容