數(shù)據(jù)產(chǎn)品工作指北(3)-實(shí)時(shí)數(shù)倉分層

按照業(yè)務(wù)實(shí)際,數(shù)倉區(qū)分為ODS、DW、SCD、RPT層,DIM維度層會(huì)貫穿所有層使用,為方便后臺(tái)查詢會(huì)放到RPT層。

ODS層(表存放在ODS庫):

ODS層存放的是從業(yè)務(wù)源系統(tǒng)同步過來的數(shù)據(jù),表名增加【ODS_業(yè)務(wù)簡寫_】前綴,表結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)保持與源系統(tǒng)一致。ODS表的分區(qū)策略是表數(shù)據(jù)量小于2萬以下的常用表建成維度表,表數(shù)據(jù)量大于2萬、或者非常用的表建成分區(qū)表。

DW層(表存放在DW庫):

DW存放的是經(jīng)過初步加工的,標(biāo)準(zhǔn)的,帶有時(shí)間特征的明細(xì)數(shù)據(jù),表名為范圍【DW_業(yè)務(wù)簡寫_業(yè)務(wù)名稱_(RT/NRT)】,以后綴RT(實(shí)時(shí))和NRT(非實(shí)時(shí))作為實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)(刷新頻率以日計(jì))的區(qū)分。

DW表的字段必須是規(guī)范的,命名和類型都要參照下面的命名規(guī)范,不能無腦照搬源表字段。

DW數(shù)據(jù)的處理原則是去空(對(duì)空值補(bǔ)NULL_ID或0值)、標(biāo)準(zhǔn)化(轉(zhuǎn)換非標(biāo)數(shù)據(jù)類型和非標(biāo)準(zhǔn)的表示方法)、預(yù)關(guān)聯(lián)(關(guān)聯(lián)出明細(xì)粒度上有用的維度和其他邏輯信息)。

DW表的擴(kuò)展原則是支持字段(column)上的擴(kuò)展而不是行(row)上的擴(kuò)展。意味著設(shè)計(jì)DW模型的時(shí)候就要確定業(yè)務(wù)的數(shù)據(jù)范圍,在列的設(shè)計(jì)上盡量采取最小可用的原則,保持模型的簡潔。

DW表的更新策略常用的有兩種:時(shí)間增量更新和主鍵更新。時(shí)間增量在非實(shí)時(shí)數(shù)倉使用得比較多,一般采用的是DELETE-->INSERT-->EXCEPTION(ROLLBACK)的方式運(yùn)行,保持?jǐn)?shù)據(jù)執(zhí)行的冪等性。數(shù)據(jù)批量產(chǎn)生批量插入更新,邏輯簡單,但缺點(diǎn)是可能會(huì)涉及到大量未更新數(shù)據(jù)的處理。主鍵更新是檢測到某行數(shù)據(jù)發(fā)生變化之后,才執(zhí)行的更新行為,涉及到的更新數(shù)據(jù)量會(huì)比較小。優(yōu)點(diǎn)是數(shù)據(jù)更新迅速,處理量小,缺點(diǎn)是必須保持?jǐn)?shù)據(jù)有唯一性主鍵,而且在有多源更新、數(shù)據(jù)物理刪除時(shí)處理邏輯會(huì)變得復(fù)雜。

DW表不能直接作為最終報(bào)表的查詢表。DW表的建設(shè)目的不是直接為了業(yè)務(wù)主題,奔著業(yè)務(wù)主體的目標(biāo)去開發(fā)DW表,結(jié)果是只會(huì)開發(fā)出一張自己能用的中間表。

如無必要,勿增實(shí)體(奧卡姆剃刀原則)。DW表盡量通用,不要為了某些特殊的剔除邏輯又衍生出新的同質(zhì)DW表,正確的做法是常用邏輯可以增加剔除標(biāo)識(shí)字段,不常用邏輯則直接寫在下游業(yè)務(wù)邏輯中剔除。要考慮在橫向列上擴(kuò)展,而不是新增模型粗暴解決。

SCD層(表存放在SCD庫):

SCD表命名規(guī)范為【SCD_業(yè)務(wù)簡寫_業(yè)務(wù)名稱】

SCD緩慢變化維的概念旨在記錄數(shù)據(jù)的變化情況,我們采取的是拉鏈表的方式存儲(chǔ)。原則上可以針對(duì)數(shù)據(jù)的時(shí)刻變化進(jìn)行記錄,但一般只是針對(duì)統(tǒng)計(jì)周期的最小粒度做記錄。

SCD常用的用途其實(shí)是針對(duì)維表的特定字段發(fā)生變化進(jìn)行記錄,只是我們?yōu)榱诉_(dá)到減少變化數(shù)據(jù)的存儲(chǔ)量,在一些事實(shí)數(shù)據(jù)上也使用了這一技術(shù)。

SCD表的字段最好不要出現(xiàn)NULL值,否則對(duì)比的時(shí)候可能會(huì)出錯(cuò)。

RPT層(表存放在bi庫):

RPT是面向報(bào)表層的,包括報(bào)表查詢用到的匯總表(某些查詢維度較少時(shí)可以用)、明細(xì)表。RPT表的命名規(guī)范是(RPT_業(yè)務(wù)簡寫_業(yè)務(wù)名稱_(DAY/MON/WEEK/QTR/YEAR),其后綴表示表中數(shù)據(jù)的最小主時(shí)間粒度。

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

相關(guān)閱讀更多精彩內(nèi)容

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