老司机午夜视频网址一区|五月天中文字幕AV免费高清|四川寡妇高潮AAA片|国产欧美亚洲制服|久久99国产亚洲|成人网站视频伊人|日本色免费一区二区|中文字幕天堂第一页的来源|ts米兰视频一区二区|免费啪啪啪一区二区。v

數(shù)倉數(shù)據分析方法?
  • 更新時間:2025-05-03 10:52:28
  • 數(shù)倉開發(fā)
  • 發(fā)布時間:11個月前
  • 653

數(shù)據分層是數(shù)據倉庫設計中十分重要的一個環(huán)節(jié),優(yōu)秀的分層設計能夠讓整個數(shù)據體系更易理解和使用。而目前網絡中大部分可以被檢索到相關文章只是簡單地提及數(shù)據分層的設計,或缺少明確而詳細的說明,或缺少可落地實施的方案,或缺少具體的示例說明。

因此,本文將指出一種通用的數(shù)據倉庫分層方法,具體包含如下內容:

介紹數(shù)據分層的作用

提出一種通用的數(shù)據分層設計,以及分層設計的原則

舉出具體的例子說明

提出可落地的實踐意見

1數(shù)據分層

“為什么要進行數(shù)據分層?”

這應該是數(shù)據倉庫同學在設計數(shù)據分層時首先要被挑戰(zhàn)的問題,類似的問題可能會有很多,比如說“為什么要做數(shù)據倉庫?”、“為什么要做元數(shù)據管理?”、“為什么要做數(shù)據質量管理?”。當然,這里我們只聊一下為什么要做設計數(shù)據分層。

作為一名數(shù)據的規(guī)劃者,我們肯定希望自己的數(shù)據能夠有秩序地流轉,數(shù)據的整個生命周期能夠清晰明確被設計者和使用者感知到。直觀來講就是如下的左圖這般層次清晰、依賴關系直觀。

但是,大多數(shù)情況下,我們完成的數(shù)據體系卻是依賴復雜、層級混亂的。如下的右圖,在不知不覺的情況下,我們可能會做出一套表依賴結構混亂,甚至出現(xiàn)循環(huán)依賴的數(shù)據體系。

數(shù)據倉庫分層架構,數(shù)據架構圖,數(shù)據倉庫分層設計原則,電商數(shù)據庫設計

因此,我們需要一套行之有效的數(shù)據組織和管理方法來讓我們的數(shù)據體系更有序,這就是談到的數(shù)據分層。數(shù)據分層并不能解決所有的數(shù)據問題,但是,數(shù)據分層卻可以給我們帶來如下的好處:

清晰數(shù)據結構:每一個數(shù)據分層都有它的作用域和職責,在使用表的時候能更方便地定位和理解

減少重復開發(fā):規(guī)范數(shù)據分層,開發(fā)一些通用的中間層數(shù)據,能夠減少極大的重復計算

統(tǒng)一數(shù)據口徑:通過數(shù)據分層,提供統(tǒng)一的數(shù)據出口,統(tǒng)一對外輸出的數(shù)據口徑

復雜問題簡單化:將一個復雜的任務分解成多個步驟來完成,每一層解決特定的問題

2一種通用的數(shù)據分層設計

為了滿足前面提到數(shù)據分層帶來的好處,我們將數(shù)據模型分為三層:數(shù)據運營層(?ODS )、數(shù)據倉庫層(DW)和數(shù)據應用層(APP)。如下圖所示。簡單來講,我們可以理解為:**ODS層存放的是接入的原始數(shù)據,DW層是存放我們要重點設計的數(shù)據倉庫中間層數(shù)據,APP是面向業(yè)務定制的應用數(shù)據。**下面詳細介紹這三層的設計。

數(shù)據倉庫分層架構,數(shù)據架構圖,數(shù)據倉庫分層設計原則,電商數(shù)據庫設計

一、數(shù)據運營層:ODS(Operational Data Store)

“面向主題的”,數(shù)據運營層,也叫ODS層,是最接近數(shù)據源中數(shù)據的一層,數(shù)據源中的數(shù)據,經過抽取、洗凈、傳輸,也就說傳說中的 ETL 之后,裝入本層。本層的數(shù)據,總體上大多是按照源頭業(yè)務系統(tǒng)的分類方式而分類的。

一般來講,為了考慮后續(xù)可能需要追溯數(shù)據問題,因此對于這一層就不建議做過多的數(shù)據清洗工作,原封不動地接入原始數(shù)據即可,至于數(shù)據的去噪、去重、異常值處理等過程可以放在后面的DWD層來做。

二、數(shù)據倉庫層:DW(Data Warehouse)

數(shù)據倉庫層是我們在做數(shù)據倉庫時要核心設計的一層,在這里,從?ODS 層中獲得的數(shù)據按照主題建立各種數(shù)據模型。DW層又細分為 DWD(Data Warehouse Detail)層、DWM(Data WareHouse Middle)層和DWS(Data WareHouse Servce)層。

1、數(shù)據明細層:DWD(Data Warehouse Detail)

該層一般保持和ODS層一樣的數(shù)據粒度,并且提供一定的數(shù)據質量保證。同時,為了提高數(shù)據明細層的易用性,該層會采用一些維度退化手法,將維度退化至事實表中,減少事實表和維表的關聯(lián)。

另外,在該層也會做一部分的數(shù)據聚合,將相同主題的數(shù)據匯集到一張表中,提高數(shù)據的可用性,后文會舉例說明。

2、數(shù)據中間層:DWM(Data WareHouse Middle)

該層會在DWD層的數(shù)據基礎上,對數(shù)據做輕度的聚合操作,生成一系列的中間表,提升公共指標的復用性,減少重復加工。直觀來講,就是對通用的核心維度進行聚合操作,算出相應的統(tǒng)計指標。

3、數(shù)據服務層:DWS(Data WareHouse Servce)

又稱數(shù)據集市或寬表。按照業(yè)務劃分,如流量、訂單、用戶等,生成字段比較多的寬表,用于提供后續(xù)的業(yè)務查詢,OLAP分析,數(shù)據分發(fā)等。

一般來講,該層的數(shù)據表會相對比較少,一張表會涵蓋比較多的業(yè)務內容,由于其字段較多,因此一般也會稱該層的表為寬表。

在實際計算中,如果直接從DWD或者ODS計算出寬表的統(tǒng)計指標,會存在計算量太大并且維度太少的問題,因此一般的做法是,在DWM層先計算出多個小的中間表,然后再拼接成一張DWS的寬表。由于寬和窄的界限不易界定,也可以去掉DWM這一層,只留DWS層,將所有的數(shù)據在放在DWS亦可。

三、數(shù)據應用層:APP(Application)

在這里,主要是提供給數(shù)據產品和數(shù)據分析使用的數(shù)據,一般會存放在?ES、PostgreSql、Redis等系統(tǒng)中供線上系統(tǒng)使用,也可能會存在 Hive 或者 Druid 中供數(shù)據分析和數(shù)據挖掘使用。比如我們經常說的報表數(shù)據,一般就放在這里。

四、維表層(Dimension)

最后補充一個維表層,維表層主要包含兩部分數(shù)據:

高基數(shù)維度數(shù)據:一般是用戶資料表、商品資料表類似的資料表。數(shù)據量可能是千萬級或者上億級別。

低基數(shù)維度數(shù)據:一般是配置表,比如枚舉值對應的中文含義,或者日期維表。數(shù)據量可能是個位數(shù)或者幾千幾萬。

至此,我們講完了數(shù)據分層設計中每一層的含義,這里做一個總結便于理解,如下圖。

數(shù)據倉庫分層架構,數(shù)據架構圖,數(shù)據倉庫分層設計原則,電商數(shù)據庫設計

3舉個例子

趁熱打鐵,舉個栗子說明一下,如下圖,可以認為是一個電商網站的數(shù)據體系設計。我們暫且只關注用戶訪問日志這一部分數(shù)據。

在ODS層中,由于各端的開發(fā)團隊不同或者各種其它問題,用戶的訪問日志被分成了好幾張表上報到了我們的ODS層。

為了方便大家的使用,我們在DWD層做了一張用戶訪問行為天表,在這里,我們將PC網頁、H5、小程序和原生APP訪問日志匯聚到一張表里面,統(tǒng)一字段名,提升數(shù)據質量,這樣就有了一張可供大家方便使用的明細表了。

在DWM層,我們會從DWD層中選取業(yè)務關注的核心維度來做聚合操作,比如只保留人、商品、設備和頁面區(qū)域維度。類似的,我們這樣做了很多個DWM的中間表。

然后在DWS層,我們將一個人在整個網站中的行為數(shù)據放到一張表中,這就是我們的寬表了,有了這張表,就可以快速滿足大部分的通用型業(yè)務需求了。

最后,在APP應用層,根據需求從DWS層的一張或者多張表取出數(shù)據拼接成一張應用表即可。

備注:例子只是為了簡單地說明每一層的作用,并不是最合理的解決方案,大家辯證地看待即可。

數(shù)據倉庫分層架構,數(shù)據架構圖,數(shù)據倉庫分層設計原則,電商數(shù)據庫設計

4技術實踐

既然談到了數(shù)據分層,那不同的層次中會用到什么計算引擎和存儲系統(tǒng)呢,本節(jié)來簡單分享一下。數(shù)據層的存儲一般如下:

Data Source:數(shù)據源一般是業(yè)務庫和埋點,當然也會有第三方購買數(shù)據等多種數(shù)據來源方式。業(yè)務庫的存儲一般是Mysql 和 PostgreSql。

ODS 層:ODS 的數(shù)據量一般非常大,所以大多數(shù)公司會選擇存在HDFS上,即Hive或者Hbase,Hive居多。

DW 層:一般和 ODS 的存儲一致,但是為了滿足更多的需求,也會有存放在 PG 和 ES 中的情況。

APP 層:應用層的數(shù)據,一般都要求比較快的響應速度,因此一般是放在 Mysql、PG、Redis中。

計算引擎的話,可以簡單參考圖中所列就行。目前大數(shù)據相關的技術更新迭代比較快,本節(jié)所列僅為簡單參考。

數(shù)據倉庫分層架構,數(shù)據架構圖,數(shù)據倉庫分層設計原則,電商數(shù)據庫設計

5思考

思考和總結一下數(shù)據分層的原則是什么?為什么要這樣分層?每層之間的界限又是什么?我個人從這幾個角度來理解數(shù)據分層的劃分:

從對應用的支持來講,我們希望越靠上層次,越對應用友好。比如APP層,基本是完全為應用來設計的,很易懂,DWS層的話,相對來講就會有一點點理解成本,然后DWM和DWD層就比較難理解了,因為它的維度可能會比較多,而且一個需求可能要多張表經過很復雜的計算才能完成。

從能力范圍來講,我們希望80%需求由20%的表來支持。直接點講,就是大部分(80%以上)的需求,都用DWS的表來支持就行,DWS支持不了的,就用DWM和DWD的表來支持,這些都支持不了的極少一部分數(shù)據需要從原始日志中撈取。結合第一點來講的話就是:80%的需求,我們都希望以對應用很友好的方式來支持,而不是直接暴露給應用方原始日志。

從數(shù)據聚合程度來講,我們希望,越上層數(shù)據的聚合程度越高,看上面的例子即可,ODS和DWD的數(shù)據基本是原始日志的粒度,不做任何聚合操作,DWM做了輕度的聚合操作只保留了通用的維度,DWS做了更高的聚合操作,可能只保留一到兩個能表征當前描述主體的維度。從這個角度來看,我們又可以理解為我們是按照數(shù)據的聚合程度來劃分數(shù)據層次的。

比如,目前市面上很流行的帆軟公司的軟件——FineBI,功能算是前沿的,可做BI報表,內置了10+行業(yè)解決方案和幾十種可視化大屏模板demo,只需要直接把數(shù)據放入到模板中,馬上就可以生成數(shù)據,無需花費很多時間,很適合企業(yè)使用。


我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復、物聯(lián)網開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/sc/18441.html

在線客服

掃碼聯(lián)系客服

3985758

回到頂部