<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>

          基礎(chǔ)進(jìn)階ODS、DWD、DWM等模型分層與項(xiàng)目實(shí)戰(zhàn)

          共 4739字,需瀏覽 10分鐘

           ·

          2022-06-26 19:44

          來(lái)源:大數(shù)據(jù)范式

          全文導(dǎo)讀

          數(shù)倉(cāng)在建設(shè)過(guò)程中,對(duì)數(shù)據(jù)的組織管理上,不僅要根據(jù)業(yè)務(wù)進(jìn)行縱向的主題域劃分,還需要橫向的數(shù)倉(cāng)分層規(guī)范。本文作者圍繞企業(yè)數(shù)倉(cāng)分層展開(kāi)分析,希望對(duì)你有幫助。

          從事數(shù)倉(cāng)相關(guān)工作的人員都知道數(shù)倉(cāng)模型設(shè)計(jì)的首要工作之一就是進(jìn)行模型分層,可見(jiàn)模型分層在模型設(shè)計(jì)過(guò)程中的重要性,確實(shí)優(yōu)秀的分層設(shè)計(jì)是一個(gè)數(shù)倉(cāng)項(xiàng)目能否建設(shè)成功的核心要素,讓數(shù)據(jù)易理解和高復(fù)用是分層的核心目標(biāo)。        

          數(shù)據(jù)流向


          應(yīng)用示例

          何為數(shù)倉(cāng)DW

          Data warehouse(可簡(jiǎn)寫(xiě)為DW或者DWH)數(shù)據(jù)倉(cāng)庫(kù),是在數(shù)據(jù)庫(kù)已經(jīng)大量存在的情況下,它是一整套包括了etl、調(diào)度、建模在內(nèi)的完整的理論體系。

          數(shù)據(jù)倉(cāng)庫(kù)的方案建設(shè)的目的,是為前端查詢(xún)和分析作為基礎(chǔ),主要應(yīng)用于OLAP(on-line Analytical Processing),支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢(xún)結(jié)果。目前行業(yè)比較流行的有:AWS Redshift,Greenplum,Hive等。數(shù)據(jù)倉(cāng)庫(kù)并不是數(shù)據(jù)的最終目的地,而是為數(shù)據(jù)最終的目的地做好準(zhǔn)備,這些準(zhǔn)備包含:清洗、轉(zhuǎn)義、分類(lèi)、重組、合并、拆分、統(tǒng)計(jì)等。

          主要特點(diǎn)

          • 面向主題

            • 操作型數(shù)據(jù)庫(kù)組織面向事務(wù)處理任務(wù),而數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是按照一定的主題域進(jìn)行組織。
            • 主題是指用戶(hù)使用數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行決策時(shí)所關(guān)心的重點(diǎn)方面,一個(gè)主題通過(guò)與多個(gè)操作型信息系統(tǒng)相關(guān)。
          • 集成

            • 需要對(duì)源數(shù)據(jù)進(jìn)行加工與融合,統(tǒng)一與綜合
            • 在加工的過(guò)程中必須消除源數(shù)據(jù)的不一致性,以保證數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的信息時(shí)關(guān)于整個(gè)企業(yè)的一致的全局信息。(關(guān)聯(lián)關(guān)系)
          • 不可修改

            • DW中的數(shù)據(jù)并不是最新的,而是來(lái)源于其他數(shù)據(jù)源
            • 數(shù)據(jù)倉(cāng)庫(kù)主要是為決策分析提供數(shù)據(jù),涉及的操作主要是數(shù)據(jù)的查詢(xún)
          • 與時(shí)間相關(guān)

            • 處于決策的需要數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)都需要標(biāo)明時(shí)間屬性

          與數(shù)據(jù)庫(kù)的對(duì)比

          • DW:專(zhuān)門(mén)為數(shù)據(jù)分析設(shè)計(jì)的,涉及讀取大量數(shù)據(jù)以了解數(shù)據(jù)之間的關(guān)系和趨勢(shì)
          • 數(shù)據(jù)庫(kù):用于捕獲和存儲(chǔ)數(shù)據(jù)



            為何要分層

          數(shù)據(jù)倉(cāng)庫(kù)中涉及到的問(wèn)題:

          1. 為什么要做數(shù)據(jù)倉(cāng)庫(kù)?
          2. 為什么要做數(shù)據(jù)質(zhì)量管理?
          3. 為什么要做元數(shù)據(jù)管理?
          4. 數(shù)倉(cāng)分層中每個(gè)層的作用是什么?

          在實(shí)際的工作中,我們都希望自己的數(shù)據(jù)能夠有順序地流轉(zhuǎn),設(shè)計(jì)者和使用者能夠清晰地知道數(shù)據(jù)的整個(gè)聲明周期,比如下面左圖。

          但是,實(shí)際情況下,我們所面臨的數(shù)據(jù)狀況很有可能是復(fù)雜性高、且層級(jí)混亂的,我們可能會(huì)做出一套表依賴(lài)結(jié)構(gòu)混亂,且出現(xiàn)循環(huán)依賴(lài)的數(shù)據(jù)體系,比如下面的右圖。為了解決我們可能面臨的問(wèn)題,需要一套行之有效的數(shù)據(jù)組織、管理和處理方法,來(lái)讓我們的數(shù)據(jù)體系更加有序,這就是數(shù)據(jù)分層。數(shù)據(jù)分層的好處:

          • 清晰數(shù)據(jù)結(jié)構(gòu):讓每個(gè)數(shù)據(jù)層都有自己的作用和職責(zé),在使用和維護(hù)的時(shí)候能夠更方便和理解
          • 復(fù)雜問(wèn)題簡(jiǎn)化:將一個(gè)復(fù)雜的任務(wù)拆解成多個(gè)步驟來(lái)分步驟完成,每個(gè)層只解決特定的問(wèn)題
          • 統(tǒng)一數(shù)據(jù)口徑:通過(guò)數(shù)據(jù)分層,提供統(tǒng)一的數(shù)據(jù)出口,統(tǒng)一輸出口徑
            減少重復(fù)開(kāi)發(fā):規(guī)范數(shù)據(jù)分層,開(kāi)發(fā)通用的中間層,可以極大地減少重復(fù)計(jì)算的工作。


          • 數(shù)據(jù)分層

          每個(gè)公司的業(yè)務(wù)都可以根據(jù)自己的業(yè)務(wù)需求分層不同的層次;目前比較成熟的數(shù)據(jù)分層:數(shù)據(jù)運(yùn)營(yíng)層ODS、數(shù)據(jù)倉(cāng)庫(kù)層DW、數(shù)據(jù)服務(wù)層ADS(APP)。實(shí)時(shí)數(shù)倉(cāng)項(xiàng)目架構(gòu)分層

          數(shù)據(jù)運(yùn)營(yíng)層ODS

          數(shù)據(jù)運(yùn)營(yíng)層:Operation Data Store 數(shù)據(jù)準(zhǔn)備區(qū),也稱(chēng)為貼源層。數(shù)據(jù)源中的數(shù)據(jù),經(jīng)過(guò)抽取、洗凈、傳輸,也就是ETL過(guò)程之后進(jìn)入本層。該層的主要功能:

          • ODS是后面數(shù)據(jù)倉(cāng)庫(kù)層的準(zhǔn)備區(qū)
          • 為DWD層提供原始數(shù)據(jù)
          • 減少對(duì)業(yè)務(wù)系統(tǒng)的影響

          在源數(shù)據(jù)裝入這一層時(shí),要進(jìn)行諸如去噪(例如有一條數(shù)據(jù)中人的年齡是 300 歲,這種屬于異常數(shù)據(jù),就需要提前做一些處理)、去重(例如在個(gè)人資料表中,同一 ID 卻有兩條重復(fù)數(shù)據(jù),在接入的時(shí)候需要做一步去重)、字段命名規(guī)范等一系列操作。         但是為了考慮后續(xù)可能需要追溯數(shù)據(jù)問(wèn)題,因此對(duì)于這一層就不建議做過(guò)多的數(shù)據(jù)清洗工作,原封不動(dòng)地接入原始數(shù)據(jù)也可以,根據(jù)業(yè)務(wù)具體分層的需求來(lái)做。

          這層的數(shù)據(jù)是后續(xù)數(shù)據(jù)倉(cāng)庫(kù)加工數(shù)據(jù)的來(lái)源。數(shù)據(jù)來(lái)源的方式:

          • 業(yè)務(wù)庫(kù)

            • 經(jīng)常會(huì)使用sqoop來(lái)抽取,例如每天定時(shí)抽取一次。
            • 實(shí)時(shí)方面,可以考慮用canal監(jiān)聽(tīng)mysql的binlog,實(shí)時(shí)接入即可。
          • 埋點(diǎn)日志

            • 日志一般以文件的形式保存,可以選擇用flume定時(shí)同步
            • 可以用spark streaming或者Flink來(lái)實(shí)時(shí)接入
            • kafka也OK
          • 消息隊(duì)列:即來(lái)自ActiveMQ、Kafka的數(shù)據(jù)等。

          數(shù)據(jù)倉(cāng)庫(kù)層

          數(shù)據(jù)倉(cāng)庫(kù)層從上到下,又可以分為3個(gè)層:數(shù)據(jù)細(xì)節(jié)層DWD數(shù)據(jù)中間層DWM數(shù)據(jù)服務(wù)層DWS

          數(shù)據(jù)細(xì)節(jié)層DWD

          數(shù)據(jù)細(xì)節(jié)層:data warehouse details,DWD(數(shù)據(jù)清洗/DWI)

          該層是業(yè)務(wù)層和數(shù)據(jù)倉(cāng)庫(kù)的隔離層,保持和ODS層一樣的數(shù)據(jù)顆粒度;主要是對(duì)ODS數(shù)據(jù)層做一些數(shù)據(jù)的清洗和規(guī)范化的操作,比如去除空數(shù)據(jù)、臟數(shù)據(jù)、離群值等。

          為了提高數(shù)據(jù)明細(xì)層的易用性,該層通常會(huì)才采用一些維度退化方法,將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。從0到1搭建數(shù)倉(cāng)DWD層案例實(shí)踐

          數(shù)據(jù)中間層DWM

          數(shù)據(jù)中間層:Data Warehouse Middle,DWM

          該層是在DWD層的數(shù)據(jù)基礎(chǔ)上,對(duì)數(shù)據(jù)做一些輕微的聚合操作,生成一些列的中間結(jié)果表,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工的工作。

          簡(jiǎn)答來(lái)說(shuō),對(duì)通用的核心維度進(jìn)行聚合操作,算出相應(yīng)的統(tǒng)計(jì)指標(biāo)

          數(shù)據(jù)服務(wù)層DWS

          數(shù)據(jù)服務(wù)層:Data Warehouse Service,DWS(寬表-用戶(hù)行為,輕度聚合)

          該層是基于DWM上的基礎(chǔ)數(shù)據(jù),整合匯總成分析某一個(gè)主題域的數(shù)據(jù)服務(wù)層,一般是寬表,用于提供后續(xù)的業(yè)務(wù)查詢(xún),OLAP分析,數(shù)據(jù)分發(fā)等。

          一般來(lái)說(shuō),該層的數(shù)據(jù)表會(huì)相對(duì)較少;一張表會(huì)涵蓋比較多的業(yè)務(wù)內(nèi)容,由于其字段較多,因此一般也會(huì)稱(chēng)該層的表為寬表。如何優(yōu)雅的設(shè)計(jì)DWS層?

          • 用戶(hù)行為,輕度聚合對(duì)DWD
          • 主要對(duì)ODS/DWD層數(shù)據(jù)做一些輕度的匯總。

          數(shù)據(jù)應(yīng)用層ADS

          數(shù)據(jù)應(yīng)用層:Application Data Service,ADS(APP/DAL/DF)-出報(bào)表結(jié)果

          該層主要是提供給數(shù)據(jù)產(chǎn)品和數(shù)據(jù)分析使用的數(shù)據(jù),一般會(huì)存放在ES、Redis、PostgreSql等系統(tǒng)中供線上系統(tǒng)使用;也可能存放在hive或者Druid中,供數(shù)據(jù)分析和數(shù)據(jù)挖掘使用,比如常用的數(shù)據(jù)報(bào)表就是存在這里的。數(shù)倉(cāng)ADS層指標(biāo)計(jì)算案例分享

          事實(shí)表 Fact Table

          事實(shí)表是指存儲(chǔ)有事實(shí)記錄的表,比如系統(tǒng)日志、銷(xiāo)售記錄等。事實(shí)表的記錄在不斷地增長(zhǎng),比如電商的商品訂單表,就是類(lèi)似的情況,所以事實(shí)表的體積通常是遠(yuǎn)大于其他表。

          維表層Dimension(DIM)

          維度表(Dimension Table)或維表,有時(shí)也稱(chēng)查找表(Lookup Table),是與事實(shí)表相對(duì)應(yīng)的一種表;它保存了維度的屬性值,可以跟事實(shí)表做關(guān)聯(lián),相當(dāng)于將事實(shí)表上經(jīng)常重復(fù)出現(xiàn)的屬性抽取、規(guī)范出來(lái)用一張表進(jìn)行管理。核心技術(shù):維度建模

          維度表主要是包含兩個(gè)部分:

          • 高基數(shù)維度數(shù)據(jù):一般是用戶(hù)資料表、商品資料表類(lèi)似的資料表,數(shù)據(jù)量可能是千萬(wàn)級(jí)或者上億級(jí)別
          • 低基數(shù)維度數(shù)據(jù):一般是配置表,比如枚舉字段對(duì)應(yīng)的中文含義,或者日期維表等;數(shù)據(jù)量可能就是個(gè)位數(shù)或者幾千幾萬(wàn)。

          臨時(shí)表TMP

          每一層的計(jì)算都會(huì)有很多臨時(shí)表,專(zhuān)設(shè)一個(gè)DWTMP層來(lái)存儲(chǔ)我們數(shù)據(jù)倉(cāng)庫(kù)的臨時(shí)表。

          數(shù)據(jù)集市

          狹義ADS層;廣義上指hadoop從DWD DWS ADS 同步到RDS的數(shù)據(jù)。

          數(shù)據(jù)集市(Data Mart),也叫數(shù)據(jù)市場(chǎng),數(shù)據(jù)集市就是滿(mǎn)足特定的部門(mén)或者用戶(hù)的需求,按照多維的方式進(jìn)行存儲(chǔ),包括定義維度、需要計(jì)算的指標(biāo)、維度的層次等,生成面向決策分析需求的數(shù)據(jù)立方體。

          從范圍上來(lái)說(shuō),數(shù)據(jù)是從企業(yè)范圍的數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù),或者是更加專(zhuān)業(yè)的數(shù)據(jù)倉(cāng)庫(kù)中抽取出來(lái)的。數(shù)據(jù)中心的重點(diǎn)就在于它迎合了專(zhuān)業(yè)用戶(hù)群體的特殊需求,在分析、內(nèi)容、表現(xiàn),以及易用方面。數(shù)據(jù)中心的用戶(hù)希望數(shù)據(jù)是由他們熟悉的術(shù)語(yǔ)表現(xiàn)的。

          帶有數(shù)據(jù)集市的數(shù)據(jù)倉(cāng)儲(chǔ)結(jié)構(gòu)

          區(qū)別數(shù)據(jù)倉(cāng)庫(kù)

          數(shù)據(jù)集市就是企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)的一個(gè)子集,它主要面向部門(mén)級(jí)業(yè)務(wù),并且只面向某個(gè)特定的主題。為了解決靈活性與性能之間的矛盾,數(shù)據(jù)集市就是數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中增加的一種小型的部門(mén)或工作組級(jí)別的數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)集市存儲(chǔ)為特定用戶(hù)預(yù)先計(jì)算好的數(shù)據(jù),從而滿(mǎn)足用戶(hù)對(duì)性能的需求。數(shù)據(jù)集市可以在一定程度上緩解訪問(wèn)數(shù)據(jù)倉(cāng)庫(kù)的瓶頸。

          理論上講,應(yīng)該有一個(gè)總的數(shù)據(jù)倉(cāng)庫(kù)的概念,然后才有數(shù)據(jù)集市。實(shí)際建設(shè)數(shù)據(jù)集市的時(shí)候,國(guó)內(nèi)很少這么做。國(guó)內(nèi)一般會(huì)先從數(shù)據(jù)集市入手,就某一個(gè)特定的主題(比如企業(yè)的客戶(hù)信息)先做數(shù)據(jù)集市,再建設(shè)數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市建立的先后次序之分,是和設(shè)計(jì)方法緊密相關(guān)的。而數(shù)據(jù)倉(cāng)庫(kù)作為工程學(xué)科,并沒(méi)有對(duì)錯(cuò)之分。

          在數(shù)據(jù)結(jié)構(gòu)上,數(shù)據(jù)倉(cāng)庫(kù)是面向主題的、集成的數(shù)據(jù)的集合。而數(shù)據(jù)集市通常被定義為星型結(jié)構(gòu)或者雪花型數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)集市一般是由一張事實(shí)表和幾張維表組成的。

          問(wèn)題總結(jié)

          ODS與DWD區(qū)別?

          問(wèn):還是不太明白 ods 和 dwd 層的區(qū)別,有了 ods 層后感覺(jué) dwd 沒(méi)有什么用了。答:嗯,我是這樣理解的,站在一個(gè)理想的角度來(lái)講,如果 ods 層的數(shù)據(jù)就非常規(guī)整,基本能滿(mǎn)足我們絕大部分的需求,這當(dāng)然是好的,這時(shí)候 dwd 層其實(shí)也沒(méi)太大必要。但是現(xiàn)實(shí)中接觸的情況是 ods 層的數(shù)據(jù)很難保證質(zhì)量,畢竟數(shù)據(jù)的來(lái)源多種多樣,推送方也會(huì)有自己的推送邏輯,在這種情況下,我們就需要通過(guò)額外的一層 dwd 來(lái)屏蔽一些底層的差異。問(wèn):我大概明白了,是不是說(shuō) dwd 主要是對(duì) ods 層做一些數(shù)據(jù)清洗和規(guī)范化的操作,dws 主要是對(duì) ods 層數(shù)據(jù)做一些輕度的匯總? 答:對(duì)的,可以大致這樣理解。

          APP層干什么的?

          問(wèn)答三:app 層是干什么的? 問(wèn):感覺(jué)DWS層是不是沒(méi)地方放了,各個(gè)業(yè)務(wù)的DWS表是應(yīng)該在 DWD還是在 app? 答:這個(gè)問(wèn)題不太好回答,我感覺(jué)主要就是明確一下DWS層是干什么的,如果你的DWS層放的就是一些可以供業(yè)務(wù)方使用的寬表表,放在 app 層就行。如果你說(shuō)的數(shù)據(jù)集市是一個(gè)比較泛一點(diǎn)的概念,那么其實(shí) dws、dwd、app 這些合起來(lái)都算是數(shù)據(jù)集市的內(nèi)容。問(wèn):那存到 Redis、ES 中的數(shù)據(jù)算是 app層嗎? 答:算是的,我個(gè)人的理解,app 層主要存放一些相對(duì)成熟的表,能供業(yè)務(wù)側(cè)使用的。這些表可以在 Hive 中,也可以是從 Hive 導(dǎo)入 Redis 或者 ES 這種查詢(xún)性能比較好的系統(tǒng)中

          ETL

          ETL :Extract-Transform-Load,用于描述將數(shù)據(jù)從來(lái)源端經(jīng)過(guò)抽取、轉(zhuǎn)換、加載到目的端的過(guò)程。數(shù)倉(cāng)同步之道&技術(shù)棧&ETL加載策略

          寬表

          • 含義:指字段比較多的數(shù)據(jù)庫(kù)表。通常是指業(yè)務(wù)主體相關(guān)的指標(biāo)、緯度、屬性關(guān)聯(lián)在一起的一張數(shù)據(jù)庫(kù)表。
          • 特點(diǎn):
            • 寬表由于把不同的內(nèi)容都放在同一張表,寬表已經(jīng)不符合三范式的模型設(shè)計(jì)規(guī)范:
            • 壞處:數(shù)據(jù)有大量冗余
            • 好處:查詢(xún)性能的提高和便捷
          • 寬表的設(shè)計(jì)廣泛應(yīng)用于數(shù)據(jù)挖掘模型訓(xùn)練前的數(shù)據(jù)準(zhǔn)備,通過(guò)把相關(guān)字段放在同一張表中,可以大大提供數(shù)據(jù)挖掘模型訓(xùn)練過(guò)程中迭代計(jì)算的消息問(wèn)題。

          主題(Subject)

          是在較高層次上將企業(yè)信息系統(tǒng)中的數(shù)據(jù)進(jìn)行綜合、歸類(lèi)和分析利用的一個(gè)抽象概念,每一個(gè)主題基本對(duì)應(yīng)一個(gè)宏觀的分析領(lǐng)域。在邏輯意義上,它是對(duì)應(yīng)企業(yè)中某一宏觀分析領(lǐng)域所涉及的分析對(duì)象。例如“銷(xiāo)售分析”就是一個(gè)分析領(lǐng)域,因此這個(gè)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用的主題就是“銷(xiāo)售分析”。

          ?


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩黄色网| 欧美性受XXXXX黑人性爽 强欧美小嫩苞第一次免费视频 | 中文字幕在线观看网站 | 日韩18| 欧美日韩91 |