數(shù)倉入門基礎(chǔ)-6-數(shù)倉建模

個人博客:https://renwula.github.io/,本系列基于互聯(lián)網(wǎng)公司數(shù)倉,使用hive搭建數(shù)倉


? ? ? 從業(yè)中,數(shù)倉建模是一個數(shù)倉工程師需要的必備的能力,優(yōu)秀的分層設(shè)計能夠讓整個數(shù)據(jù)體系更易理解和使用。所以想入行數(shù)倉數(shù)倉分層是需要補一補的,才能知道分層的意義。

很多人都不理解為什么分層,分層的意義是什么,分層有這么重要嗎?是的就是這么重要,說一下我的理解:

>1.理清業(yè)務數(shù)據(jù):隨著數(shù)據(jù)量和業(yè)務數(shù)據(jù)表的不斷擴張,需要我們理清數(shù)據(jù)作用域,就是做什么的,可以清晰的找到數(shù)據(jù)來源。

>2.避免重復計算:為了避免多次計算,多次關(guān)聯(lián)多張表,分層可以保存中間結(jié)果,減小開發(fā)成本。

>3.增加數(shù)據(jù)使用便捷性:倉庫層的設(shè)計,讓數(shù)據(jù)能分析,好分析,能支持大部分的數(shù)據(jù)需求。

>4.避免數(shù)據(jù)分歧:統(tǒng)一數(shù)據(jù)口徑,保證數(shù)據(jù)質(zhì)量,避免出現(xiàn)統(tǒng)一指標多種概念。

比較通用的簡單的維度建模分層,分為三層:

?一、ODS層,操作數(shù)據(jù)層

把操作系統(tǒng)的數(shù)據(jù)幾乎無處理的存放在數(shù)倉中,主要有以下工作:

1.將業(yè)務結(jié)構(gòu)化數(shù)據(jù)增量或全量的同步進來;

2.將日志等非結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)化處理后落地到數(shù)倉中;

3.累計歷史數(shù)據(jù),根據(jù)數(shù)據(jù)業(yè)務需求、審計等要求保存歷史數(shù)據(jù)、清洗數(shù)據(jù),保留的數(shù)據(jù)快照也便于回溯問題。

二、CDM層,公共維度模型層

存放明細事實數(shù)據(jù)、維度數(shù)據(jù)及公共指標匯總數(shù)據(jù),統(tǒng)一口徑,保持數(shù)據(jù)一致性,減少數(shù)據(jù)重復計算,CDM層分為DWD層和DWS層。

1.DWD層,明細數(shù)據(jù)層

dwd層對業(yè)務數(shù)據(jù)進行清洗、規(guī)范化,例如去除作弊數(shù)據(jù),對數(shù)據(jù)字段進行規(guī)范命名從而避免歧義化等,另外可采用維度退化手段,將維度退化到事實表中,減少事實表與維度表的關(guān)聯(lián),提高明細表的易用性。

2.DWS層,匯總數(shù)據(jù)層

dws層,加強指標的維度退化,采用更多的寬表化的手段構(gòu)建公共指標數(shù)據(jù)層,提升公共指標的復用性,減少重復加工。

三、ADS層,應用數(shù)據(jù)層

ads層存放數(shù)據(jù)進行個性化的指標計算,不共用性、復雜性(指數(shù)型、比值型、排名型)等,會基于應用數(shù)據(jù)組裝,像大寬表集市、橫標轉(zhuǎn)縱表、趨勢指標串等,另外由于ADS某些指標具有個性化的特點,盡量不對外提供服務。

舉個例子

1.ods層會將各種日志數(shù)據(jù)及業(yè)務庫中數(shù)據(jù)或者其他一些數(shù)據(jù),進行數(shù)據(jù)落地。

2.dwd層,像用戶登錄表,會做以下一些操作

>2.1去除爬蟲等異常數(shù)據(jù),保持數(shù)據(jù)質(zhì)量

>2.2規(guī)范統(tǒng)一數(shù)據(jù)字段

>2.3拆解需拆解的字段

>2.4融合各端數(shù)據(jù)

3.dws層,像用戶主題表,會做以下一些操作

>3.1統(tǒng)計操作軌跡用戶數(shù)數(shù)據(jù)

>3.2統(tǒng)計用戶購買商品數(shù),登錄次數(shù),訂單數(shù),退貨數(shù),

>3.3增加用戶維度,時間維度

4.ads層,像用戶轉(zhuǎn)化漏斗,可以利用dws層數(shù)據(jù)進行維度分析,分析漏斗,為產(chǎn)品做決策

建模的基本原則

? ? 簡單講建模的一些原則,在建模的考慮中需要加以考慮,避免后續(xù)遇到大坑措手不及,而不要簡單的為了建模而建模。

1.高內(nèi)聚&&低耦合

主要從數(shù)據(jù)業(yè)務特性和訪問特性兩個角度來考慮:

將業(yè)務相近或者相關(guān)、粒度相同的數(shù)據(jù)設(shè)計為一個邏輯或者物理模型;

將高概率同時訪問的數(shù)據(jù)放一起 ,將低概率同時訪問的數(shù)據(jù)分開存儲。

2.核心模型與擴展模型分離

核心模型包括的宇段支持常用的核心業(yè)務,擴展模型包括的字段支持個性化或少量應用的需要,不要讓擴展模型包括的字段過多的入侵核心模型,破壞核心模型的性能及簡潔等

?3.存儲成本與計算性能均衡

在很多時候,設(shè)計可能清晰,但存儲成本很高,或存儲成本很小但計算邏輯復雜,性能差,都需要做一個比較,做到均衡,而非執(zhí)意孤行。

4.公共邏輯下沉及統(tǒng)一

避免重復計算,需將公共邏輯在底層實現(xiàn)并統(tǒng)一口徑

5.冪等性

處理邏輯不變,多次執(zhí)行結(jié)果需保持一致。

6.規(guī)范性

相同含義字段需在多表中命名一致,表命名需清晰規(guī)范,便于查詢及使用,后續(xù)將統(tǒng)一講數(shù)倉規(guī)范。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容