<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何優(yōu)雅的設(shè)計(jì)DWS層?

          共 3148字,需瀏覽 7分鐘

           ·

          2021-07-27 13:44



          今天和大家聊一個老生常談的話題,如何設(shè)計(jì)DWS層?

          對于數(shù)倉的分層,想必大家都不陌生。基于OneData方法論的三層數(shù)倉劃分:數(shù)據(jù)引入層(ODS,Operational Data Store)、數(shù)據(jù)公共層(CDM,Common Dimenions Model)和數(shù)據(jù)應(yīng)用層(ADS,Application Data Store)早就深入人心。

          當(dāng)然啦,涉及到每一層具體該怎么開發(fā)、建模,可能大家都有自己的理解。

          但好在大家對數(shù)據(jù)建模重要性的認(rèn)識那都是一致的,如果我們把指標(biāo)比作樹上的果實(shí),那么模型就好比是大樹的軀干,想讓果實(shí)結(jié)得好,必須讓樹干變得粗壯。

          我們先來回想下,構(gòu)建數(shù)據(jù)中臺的初衷是什么:

          • 缺少可以復(fù)用的數(shù)據(jù)
          • 大家不得不使用原始數(shù)據(jù)進(jìn)行清洗、加工和計(jì)算指標(biāo)
          • 大量重復(fù)代碼的開發(fā)對資源的消耗

          問題的根源就在于數(shù)據(jù)模型的無法復(fù)用,以及數(shù)據(jù)開發(fā)都是煙囪式的。所以要解決這個問題,就要搞清楚健壯的數(shù)據(jù)模型該如何設(shè)計(jì)。

          Part1常見的數(shù)倉分層設(shè)計(jì)思路

          下圖是數(shù)倉分層的邏輯架構(gòu)圖,大家不妨回憶一下數(shù)據(jù)模型的分層設(shè)計(jì):

          • 數(shù)據(jù)引入層(ODS,Operational Data Store,又稱數(shù)據(jù)基礎(chǔ)層):將原始數(shù)據(jù)幾乎無處理地存放在數(shù)據(jù)倉庫系統(tǒng)中,結(jié)構(gòu)上與源系統(tǒng)基本保持一致,是數(shù)據(jù)倉庫的數(shù)據(jù)準(zhǔn)備區(qū)。這一層的主要職責(zé)是將基礎(chǔ)數(shù)據(jù)同步、存儲。
          • 數(shù)據(jù)公共層(CDM,Common Dimenions Model):存放明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)及公共指標(biāo)匯總數(shù)據(jù)。其中,明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)一般根據(jù)ODS層數(shù)據(jù)加工生成。公共指標(biāo)匯總數(shù)據(jù)一般根據(jù)維表數(shù)據(jù)和明細(xì)事實(shí)數(shù)據(jù)加工生成。CDM層又細(xì)分為維度層(DIM)、明細(xì)數(shù)據(jù)層(DWD)和匯總數(shù)據(jù)層(DWS),采用維度模型方法作為理論基礎(chǔ), 可以定義維度模型主鍵與事實(shí)模型中外鍵關(guān)系,減少數(shù)據(jù)冗余,也提高明細(xì)數(shù)據(jù)表的易用性。在匯總數(shù)據(jù)層同樣可以關(guān)聯(lián)復(fù)用統(tǒng)計(jì)粒度中的維度,采取更多的寬表化手段構(gòu)建公共指標(biāo)數(shù)據(jù)層,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工。
            • 維度層(DIM,Dimension):以維度作為建模驅(qū)動,基于每個維度的業(yè)務(wù)含義,通過添加維度屬性、關(guān)聯(lián)維度等定義計(jì)算邏輯,完成屬性定義的過程并建立一致的數(shù)據(jù)分析維表。為了避免在維度模型中冗余關(guān)聯(lián)維度的屬性,基于雪花模型構(gòu)建維度表。
            • 明細(xì)數(shù)據(jù)層(DWD,Data Warehouse Detail):以業(yè)務(wù)過程作為建模驅(qū)動,基于每個具體的業(yè)務(wù)過程特點(diǎn),構(gòu)建最細(xì)粒度的明細(xì)事實(shí)表。可將某些重要屬性字段做適當(dāng)冗余,也即寬表化處理。
            • 匯總數(shù)據(jù)層(DWS,Data Warehouse Summary):以分析的主題對象作為建模驅(qū)動,基于上層的應(yīng)用和產(chǎn)品的指標(biāo)需求,構(gòu)建公共粒度的匯總指標(biāo)表。以寬表化手段物理化模型,構(gòu)建命名規(guī)范、口徑一致的統(tǒng)計(jì)指標(biāo),為上層提供公共指標(biāo),建立匯總寬表、明細(xì)事實(shí)表。
          • 數(shù)據(jù)應(yīng)用層(ADS,Application Data Store):存放數(shù)據(jù)產(chǎn)品個性化的統(tǒng)計(jì)指標(biāo)數(shù)據(jù),根據(jù)CDM層與ODS層加工生成。

          Part2DWS層很重要?

          通常,大家都會有這樣的疑問:明明可以直接從DWD層取數(shù),為什么要多此一舉建立DWS的匯總邏輯表呢?

          我想說的是:如果在業(yè)務(wù)場景不復(fù)雜的情況下,那樣做是沒有問題的??梢坏┟鎸?fù)雜的業(yè)務(wù)場景,那這種做法無疑是混亂的根源所在,前面提到的煙囪式開發(fā)、計(jì)算資源的浪費(fèi)等等情況,正是這樣產(chǎn)生的。

          舉個例子,我們需要的是從數(shù)據(jù)明細(xì)層中做一個初步的匯總,抽象出來一些通用的維度:時間、用戶ID、IP等,并根據(jù)這些維度做一些統(tǒng)計(jì),比如用戶每個時間段在不同登錄IP購買的商品數(shù)等。

          這里做一層輕度的匯總會讓計(jì)算更加的高效,在此基礎(chǔ)上如果計(jì)算僅7天、30天、90天的行為的話會快很多。我們希望80%的業(yè)務(wù)都能通過我們的DWS層計(jì)算,而不是ODS或者DWD層。

          Part3應(yīng)該遵循的設(shè)計(jì)原則

          聚集是指針對原始明細(xì)粒度的數(shù)據(jù)進(jìn)行匯總。DWS匯總數(shù)據(jù)層是面向分析對象的主題聚集建模,以零售的場景為例,我們最終的分析目標(biāo)為:最近一天某個類目(例如,廚具)商品在各省的銷售總額、該類目銷售額Top10的商品名稱、各省用戶購買力分布。

          因此,我們可以以最終交易成功的商品、類目、買家等角度對最近一天的數(shù)據(jù)進(jìn)行匯總。數(shù)據(jù)聚集的注意事項(xiàng)如下:

          • 聚集是不跨越事實(shí)的。聚集是針對原始星形模型進(jìn)行的匯總。為獲取和查詢與原始模型一致的結(jié)果,聚集的維度和度量必須與原始模型保持一致,因此聚集是不跨越事實(shí)的,所以原子指標(biāo)只能基于一張事實(shí)表定義,但是支持原子指標(biāo)組合為衍生原子指標(biāo)。
          • 聚集會帶來查詢性能的提升,但聚集也會增加ETL維護(hù)的難度。當(dāng)子類目對應(yīng)的一級類目發(fā)生變更時,先前存在的、已經(jīng)被匯總到聚集表中的數(shù)據(jù)需要被重新調(diào)整。

          此外,進(jìn)行DWS層設(shè)計(jì)時還需遵循數(shù)據(jù)公用性原則。數(shù)據(jù)公用性需要考慮匯總的聚集是否可以提供給第三方使用。我們可以思考基于某個維度的聚集是否經(jīng)常用于數(shù)據(jù)分析中,如果答案是肯定的,就有必要把明細(xì)數(shù)據(jù)經(jīng)過匯總沉淀到聚集表中。

          簡單的說就是:

          • 主題
          • 寬表
          • 輕度匯總

          Part4圖解DWS層設(shè)計(jì)流程

          以電商零售的場景為例,我們已經(jīng)基于ODS層的訂單表、用戶表、商品表、優(yōu)惠券表等,經(jīng)過ETL完成了DWD層的建模,一般是采用星型模型。

          這里嚴(yán)格按照:業(yè)務(wù)過程→聲明粒度→確認(rèn)維度→確認(rèn)事實(shí) 完成建模,過程如下:

          接下來,便是到了DWS層設(shè)計(jì)的環(huán)節(jié)。按照我們上面的設(shè)計(jì)思路,通過從維度表去看事實(shí)表,便可得出每天的寬表。

          這樣即可統(tǒng)計(jì)各個主題對象的當(dāng)天行為,服務(wù)于ADS層的主題寬表以及一些業(yè)務(wù)的明細(xì)數(shù)據(jù),也可以以應(yīng)對一些特殊的需求,例如:購買行為,統(tǒng)計(jì)商品復(fù)購率等。

          通過外鍵獲取相關(guān)的度量值,我們整合多個DWD的明細(xì)事實(shí)表度量值來構(gòu)成新表。

          在這里,我們還是要遵循上文提到的設(shè)計(jì)原則,在設(shè)計(jì)上盡量體現(xiàn)出公共性、使用簡單并且用戶很容易理解。

          Part5思考:如何設(shè)計(jì)出完美的DWS層?

          在我們數(shù)據(jù)中臺實(shí)際實(shí)施落地的過程中,團(tuán)隊(duì)不但要建設(shè)公共數(shù)據(jù)層,形成數(shù)據(jù)中臺,還要承擔(dān)著新需求的壓力。

          往往我們要先滿足需求(活下去),再研發(fā)公共數(shù)據(jù)層(構(gòu)建美好未來),在滿足業(yè)務(wù)需求的過程中,再根據(jù)需求不斷對模型進(jìn)行迭代和優(yōu)化,隨著時間的推移,越來越多的業(yè)務(wù)需求可以通過DWS層的數(shù)據(jù)完成。

          這一過程中,完善度是很好的考核標(biāo)準(zhǔn),主要看DWS層匯總的數(shù)據(jù)能滿足多少的查詢需求,如果匯總數(shù)據(jù)無法滿足需求,使用數(shù)據(jù)的人就必須使用明細(xì)的數(shù)據(jù),甚至是ODS層的原始數(shù)據(jù)。

          DWS/ADS層的完善度越高,說明數(shù)據(jù)的上層建設(shè)越完善,而從使用者的角度來說,查詢快、易取數(shù)、用的爽,那才是硬道理。

          end ~

          咳咳,剛好九點(diǎn)整 ?? 嘀,下班....

          最近某個十八線竟然被他的小伙伴催更了,哭泣... 

          更新慢的原因是最近訂閱了一個專欄,關(guān)于數(shù)據(jù)中臺實(shí)踐的,非常精彩。所以云祁學(xué)的也是非常認(rèn)真,三張思維導(dǎo)圖為證!

          不過,文章我還沒開始肝 ??,立個Flag,周末出一篇?


          推薦閱讀:


          什么是 OneData 體系?阿里數(shù)據(jù)中臺實(shí)施方法論解讀

          2021-06-15

          最全企業(yè)級數(shù)倉建設(shè)迭代版(4W字建議收藏)

          2021-06-21

          關(guān)于數(shù)據(jù)新人的那些困惑

          2021-06-25

          數(shù)據(jù)中臺離數(shù)據(jù)資產(chǎn)價值變現(xiàn)還有多遠(yuǎn)?

          2021-06-23

          如何搭建清晰見效的數(shù)據(jù)看板?

          2021-06-07




          我是「云祁」,一枚熱愛技術(shù)、會寫詩的大數(shù)據(jù)開發(fā)猿,歡迎大家關(guān)注呀!


          瀏覽 58
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  老汉色老汉首页aV亚洲 | 青青操视频在线观看 | 一级片免费中国女人 | 久久国产小视频 | 贵族学校极品粉穴清纯学生妹 |