該如何設計數(shù)倉的匯總層(DWS)

關于數(shù)據(jù)倉庫的分層务冕,似乎大家都有一個共同的認識血当。但涉及到每一層該如何去建模,可能每個人都有自己的理解。數(shù)據(jù)建模臊旭,毫無疑問是數(shù)倉建設的重中之重落恼,然后,在實際的開發(fā)過程中离熏,會把大量的時間都投入到了需求開發(fā)佳谦,往往會忽略數(shù)據(jù)建模(尤其是DWS層的建模),長此以往滋戳,數(shù)據(jù)模型變的越來越雜亂钻蔑,指標口徑無法統(tǒng)一,造成的結果就是:雖然表很多奸鸯,但是卻很難取數(shù)矢棚。本文主要介紹DWS層建模的基本方法論,希望對你有所幫助府喳。

數(shù)倉為什么要分層

合理的數(shù)據(jù)倉庫分層一方面能夠降低耦合性蒲肋,提高重用性,可讀性可維護性钝满,另一方面也能提高運算的效率兜粘,影響到數(shù)據(jù)需求迭代的速度,近而影響到產(chǎn)品決策的及時性弯蚜。建立數(shù)據(jù)分層可以提煉公共層孔轴,避免煙囪式開發(fā),可見一個合適且合理的數(shù)倉分層是極其重要碎捺。

通用分層設計思路

  • ODS:操作型數(shù)據(jù)(Operational Data Store)路鹰,指結構與源系統(tǒng)基本保持一致的增量或者全量數(shù)據(jù)。作為DW數(shù)據(jù)的一個數(shù)據(jù)準備區(qū)收厨,同時又承擔基礎數(shù)據(jù)記錄歷史變化晋柱,之所以保留原始數(shù)據(jù)和線上原始數(shù)據(jù)保持一致,方便后期數(shù)據(jù)核對需要诵叁。
  • CDM:通用數(shù)據(jù)模型雁竞,又稱為數(shù)據(jù)中間層(Common Data Model)土至,包含DWD涣狗、DWS、DIM層纳令。
  • DWD:數(shù)據(jù)倉庫明細層數(shù)據(jù)(Data Warehouse Detail)侥锦。對ODS層數(shù)據(jù)進行清洗轉(zhuǎn)化进栽,以業(yè)務過程作為建模驅(qū)動,基于每個具體的業(yè)務過程特點恭垦,構建最細粒度的明細事實表快毛∶ぱ幔可以結合企業(yè)的數(shù)據(jù)使用特點,基于維度建模思想祸泪,將明細事實表的某些重要屬性字段做適當冗余吗浩,也即寬表化處理,構建明細寬表没隘。
  • DWS:數(shù)據(jù)倉庫匯總層數(shù)據(jù)(Data Warehouse Summary)懂扼,基于指標需求,構建初步匯總事實表右蒲,一般是寬表阀湿。基于上層的應用和產(chǎn)品的指標需求瑰妄,構建公共粒度的匯總指標表陷嘴。以寬表化手段物理化模型,構建命名規(guī)范间坐、口徑一致的統(tǒng)計指標灾挨,為上層提供公共指標。
  • DIM:建立一致數(shù)據(jù)分析維表竹宋,可以降低數(shù)據(jù)計算口徑不統(tǒng)一的風險劳澄,同時可以方便進行交叉探查。以維度作為建模驅(qū)動蜈七,基于每個維度的業(yè)務含義秒拔,通過添加維度屬性、關聯(lián)維度等定義計算邏輯飒硅,完成屬性定義的過程并建立一致的數(shù)據(jù)分析維表砂缩。
  • ADS:面向應用的數(shù)據(jù)服務層(Application Data Service)。整合匯總成分析某一個主題域的服務數(shù)據(jù)三娩,面向應用邏輯的數(shù)據(jù)加工庵芭。該層主要存放數(shù)據(jù)產(chǎn)品個性化的統(tǒng)計指標數(shù)據(jù),這一層的數(shù)據(jù)直接對接數(shù)據(jù)的消費者尽棕,是產(chǎn)品喳挑、運營等角色可以直接感知理解的一層,大多數(shù)這一層的表都可以直接在BI上通過圖表的形式直接透出滔悉。

沒有DWS層不行嗎

當我們在做數(shù)據(jù)需求時,會不會有這樣的疑問:我直接能從DWD層很方便的取出想要的數(shù)據(jù)单绑,為什么還要多此一舉建立DWS層的匯總表呢回官?那是不是意味著可以不用建立DWS層的表呢,答案是:可以的搂橙。但是這有一個前提歉提,就是業(yè)務場景不復雜。從短期來看可以快速滿足數(shù)據(jù)需求的開發(fā),但是長期來看苔巨,會存在如下的問題:

  • 對于復雜的業(yè)務場景而言版扩,會出現(xiàn)很多跨域、跨事實的交叉探查侄泽,如果沒有沉淀出DWS層的指標進行統(tǒng)一口徑的收口礁芦,那么相同的指標會出現(xiàn)不同的口徑和命名,其后果就是取數(shù)變得越來越不方便悼尾,而且容易造成業(yè)務懷疑數(shù)據(jù)是否正確的尷尬局面柿扣。
  • 公共指標沒有統(tǒng)一計算,當每次需要相同的指標時闺魏,則需要重新計算一遍取數(shù)邏輯未状,不僅效率不高(需要關聯(lián)表,計算指標)析桥,而且會造成計算資源浪費司草。

DWS層設計

以分析的主題對象作為建模驅(qū)動,基于上層的應用和產(chǎn)品的指標需求泡仗,構建公共粒度的匯總指標表翻伺。以寬表化手段物理化模型,構建命名規(guī)范沮焕、口徑一致的統(tǒng)計指標吨岭,為上層提供公共指標,建立匯總寬表峦树。如:形成日辣辫,周,月粒度匯總明細魁巩,或者基于某一個維度急灭,如商品類目粒度的匯總日表,統(tǒng)計便于下一步報表數(shù)據(jù)結構的組織谷遂。

DWS層的基本特點

  • DWS層是面向分析維度進行設計的葬馋,分析維度通常是業(yè)務經(jīng)常需要的看數(shù)據(jù)的角度。
  • DWS層的表服務于數(shù)據(jù)報表和數(shù)據(jù)產(chǎn)品的指標需求
  • ADS層的指標數(shù)據(jù)會存在交叉探查的情況肾扰,所以DWS層的指標要保持命名和口徑一致畴嘶,避免ADS層的指標數(shù)據(jù)混亂
  • DWS是公共匯總層,提供不同維度的統(tǒng)計指標集晚,指標的口徑要保持一致窗悯,并且要提供詳細的描述
  • 以寬表的形式進行設計,比如相同粒度的統(tǒng)計指標可以放在一起偷拔,避免創(chuàng)建太多的表
  • 公共匯總層的一個表通常會對應一個派生指標
  • DWS存儲派生指標(統(tǒng)計周期+修飾詞+統(tǒng)計粒度+原子指標)蒋院,原子指標存儲在DWD層的事實表中

原子指標與派生指標

所謂原子指標亏钩,即是業(yè)務過程的度量,就是明細事實表中的度量值欺旧。比如訂單表姑丑,那么某個訂單對應的訂單金額就是一個原子指標,這個指標是伴隨著訂單的業(yè)務過程而產(chǎn)生的辞友。

所謂派生指標栅哀,即由統(tǒng)計周期+修飾詞+統(tǒng)計粒度+原子指標組合加工而成的指標

其中,統(tǒng)計周期:指的是想要統(tǒng)計的時間周期踏枣,比如天昌屉、周、月

       **修飾詞**:指的是業(yè)務的約束茵瀑,**通常出現(xiàn)在SQL的where條件中**间驮,比如訂單的下單渠道等等

       **統(tǒng)計粒度**:指的是維度組合,**通常出現(xiàn)在SQL的group by中**马昨,比如統(tǒng)計商品一級類目對應的銷售額竞帽,那一級類目就是統(tǒng)計粒度

DWS層的設計原則

關于匯總層的表建模應遵循以下的原則:

  • 數(shù)據(jù)公用性比如,匯總的聚集表能否與他人公用鸿捧?基于某個維度的聚集是否是數(shù)據(jù)分析或者報表中經(jīng)常使用的屹篓?如果滿足這些情況,我們就有必要把明細數(shù)據(jù)沉淀到匯總表中匙奴。
  • 不跨數(shù)據(jù)域數(shù)據(jù)域是在較高層次上對數(shù)據(jù)進行分類聚集的抽象堆巧,如交易統(tǒng)一劃到交易域下,商品的新增泼菌、修改放到商品域下谍肤。
  • 區(qū)分統(tǒng)計周期表命名上要能說明數(shù)據(jù)的統(tǒng)計周期,如_1d 表示最近1天哗伯,_td 截止到當天荒揣,_nd 表示最近N天。
  • 避免多個層級的數(shù)據(jù)應該避免將不同層級的數(shù)據(jù)放在一起焊刹,比如系任,如果存在7天和30天的事實,我們可以選擇用兩列存放7天和30天的事實虐块,但是需要在列名和字段注釋上說明清楚俩滥。同時我們也可以使用兩張表分別存儲不同統(tǒng)計周期的數(shù)據(jù)加以區(qū)分。
  • 聚集是不跨越事實的聚集是針對原始星型模型進行的匯總非凌,為了獲取和查詢原始模型一致的結果举农,聚集的維度和度量必須與原始模型保持一致,因此聚集是不跨事實的敞嗡。橫向鉆取(交叉探查)是針對多個事實基于一致性維度進行的分析颁糟,很多時候采用融合事實表,預先存放橫向鉆取的結果喉悴,從而提高查詢性能棱貌。因此融合事實表是一種導出模式而不是聚集。

DWS層設計步驟

  • 首先箕肃,確定聚集維度婚脱,即確定統(tǒng)計粒度,比如商品粒度
  • 然后勺像,確定統(tǒng)計周期障贸,比如天
  • 最后,確定聚集事實吟宦,即派生指標
CREATE TABLE IF NOT EXISTS dws_asale_trd_itm_ord_1d
(
    item_id                 BIGINT COMMENT '商品ID',
    item_title               STRING COMMENT '商品名稱',
    cate_id                 BIGINT COMMENT '商品類目ID',
    cate_name               STRING COMMENT '商品類目名稱',
    mord_prov               STRING COMMENT '收貨人省份',
    confirm_paid_amt_sum_1d DOUBLE COMMENT '最近一天訂單已經(jīng)確認收貨的金額總和'
)
COMMENT '商品粒度交易最近一天匯總事實表'
PARTITIONED BY (ds  STRING COMMENT '分區(qū)字段YYYYMMDD')
;

關于DWS層建設的一些問題

為什么一張DWS表通常只會對應一個派生指標篮洁?

在設計DWS表的時候,很多人會把所有可以聚合的維度進行cube殃姓,這樣就得到了很多個派生指標袁波,而這些派生指標放在同一張表中無疑會增加這張表的使用難度,比如在實際的取數(shù)時蜗侈,往往只關心某個統(tǒng)計粒度的指標篷牌。實際上cube的數(shù)據(jù)盡量放在ADS層,這樣在開發(fā)數(shù)據(jù)接口或者應用層取數(shù)時都會比較方便踏幻。所以在設計DWS層時枷颊,應當遵循前文提到的一些原則,一言以蔽之该面,就是設計盡量體現(xiàn)出公共性夭苗、使用簡單并且用戶很容易理解。

怎么設計出完美的DWS層表吆倦?

數(shù)倉建設是一個不斷迭代的過程听诸,數(shù)據(jù)建模同樣是一個不斷迭代的過程。同時蚕泽,業(yè)務是不斷變化的晌梨,建模人員對業(yè)務的理解也是變化的,這些也就注定了建模是一個迭代過程须妻。雖然存在這些變化仔蝌,但我們在數(shù)據(jù)建模的時候同樣要遵循一定的規(guī)范,切不可隨心所欲荒吏。

如何評價DWS層建設的好壞敛惊?

由于數(shù)倉的建設是與業(yè)務息息相關的,數(shù)倉建設的方法論僅僅只是指引我們構建數(shù)倉的一個方向绰更,在實際的落地執(zhí)行過程中會存在各種各樣的問題瞧挤,且不可被這些理論所禁錮锡宋。簡單一句話就是:合適就好。所以特恬,評價模型的好壞與否执俩,更多的是從使用者的角度出發(fā),比如簡單癌刽、易于取數(shù)役首、表的數(shù)量恰好。

總結

本文主要介紹了數(shù)據(jù)倉庫中DWS建設的基本思路显拜,包括DWS層的特點衡奥、設計原則以及設計步驟,并對DWS層建設存在的一些問題進行了闡述远荠。當然矮固,這些只是DWS層建模的一些方法論,智者見智仁者見仁矮台,在實際的數(shù)據(jù)建模過程中可以參考這些方法論乏屯,但也要注意與具體的業(yè)務場景相結合,數(shù)據(jù)建模是建立在自己對業(yè)務的理解基礎之上的瘦赫,切不可一味地照搬辰晕,要靈活運用。另外确虱,不要苛求建立完美的數(shù)據(jù)模型含友,應當追求簡單、方便校辩、易用窘问。換句話說,建模沒有對錯之分宜咒,合適就好惠赫。

公眾號【大數(shù)據(jù)技術與數(shù)倉】首發(fā),關注領取資料

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末故黑,一起剝皮案震驚了整個濱河市儿咱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌场晶,老刑警劉巖混埠,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诗轻,居然都是意外死亡钳宪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吏颖,“玉大人搔体,你說我怎么就攤上這事≌旄撸” “怎么了嫉柴?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵厌杜,是天一觀的道長奉呛。 經(jīng)常有香客問我,道長夯尽,這世上最難降的妖魔是什么瞧壮? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮匙握,結果婚禮上咆槽,老公的妹妹穿的比我還像新娘。我一直安慰自己圈纺,他們只是感情好秦忿,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛾娶,像睡著了一般灯谣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛔琅,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天胎许,我揣著相機與錄音,去河邊找鬼罗售。 笑死辜窑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的寨躁。 我是一名探鬼主播穆碎,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼职恳!你這毒婦竟也來了所禀?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤话肖,失蹤者是張志新(化名)和其女友劉穎北秽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體最筒,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贺氓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辙培。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔑水,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扬蕊,到底是詐尸還是另有隱情搀别,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布尾抑,位于F島的核電站歇父,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏再愈。R本人自食惡果不足惜榜苫,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翎冲。 院中可真熱鬧垂睬,春花似錦、人聲如沸抗悍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缴渊。三九已至赏壹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疟暖,已是汗流浹背卡儒。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俐巴,地道東北人骨望。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像欣舵,于是被迫代替她去往敵國和親擎鸠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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