資料分層是資料倉儲設計中十分重要的乙個環節,優秀的分層設計能夠讓整個資料體系更易理解和使用。
一、資料分層
1、為什麼要設計資料分層?
這應該是資料倉儲同學在設計資料分層時首先要被挑戰的問題。類似的問題可能會有很多,比如說「為什麼要做資料倉儲?」、「為什麼要做元資料管理?」、「為什麼要做資料質量管理?」。
當然,這裡我們只聊一下為什麼要做設計資料分層。
作為一名資料的規劃者,我們肯定希望自己的資料能夠有秩序地流轉,資料的整個生命週期能夠清晰明確被設計者和使用者感知到。
直觀來講就是如下圖這般層次清晰、依賴關係直觀:
如下圖,在不知不覺的情況下,我們可能會做出一套表依賴結構混亂,甚至出現迴圈依賴的資料體系:
二、一種通用的資料分層設計
如下圖所示:
下面詳細介紹這三層的設計:
1、資料運營層(ods)
「面向主題的」,資料運營層,也叫ods層(operational data store),是最接近資料來源中資料的一層,資料來源中的資料,經過抽取、洗淨、傳輸,也就說傳說中的 etl 之後,裝入本層。
本層的資料,總體上大多是按照源頭業務系統的分類方式而分類的。
一般來講,為了考慮後續可能需要追溯資料問題,因此對於這一層就不建議做過多的資料清洗工作,原封不動地接入原始資料即可,至於資料的去噪、去重、異常值處理等過程可以放在後面的dwd層來做。
2、資料倉儲層(dw)
資料倉儲層,dw(data warehouse),是我們在做資料倉儲時要核心設計的一層,在這裡,從 ods 層中獲得的資料按照主題建立各種資料模型。
dw層又細分為 dwd(data warehouse detail)層、dwm(data warehouse middle)層和dws(data warehouse servce)層。
1)資料明細層:dwd(data warehouse detail)
該層一般保持和ods層一樣的資料粒度,並且提供一定的資料質量保證。
同時,為了提高資料明細層的易用性,該層會採用一些維度退化手法,將維度退化至事實表中,減少事實表和維表的關聯。
另外,在該層也會做一部分的資料聚合,將相同主題的資料匯集到一張表中,提高資料的可用性,後文會舉例說明。
2)資料中間層:dwm(data warehouse middle)
該層會在dwd層的資料基礎上,對資料做輕度的聚合操作,生成一系列的中間表,提公升公共指標的復用性,減少重複加工。
直觀來講,就是對通用的核心維度進行聚合操作,算出相應的統計指標。
3)資料服務層:dws(data warehouse servce)
又稱資料集市或寬表。按照業務劃分,如流量、訂單、使用者等,生成字段比較多的寬表,用於提供後續的業務查詢,olap分析,資料分發等。
一般來講,該層的資料表會相對比較少,一張表會涵蓋比較多的業務內容,由於其字段較多,因此一般也會稱該層的表為寬表。
在實際計算中,如果直接從dwd或者ods計算出寬表的統計指標,會存在計算量太大並且維度太少的問題,因此一般的做法是,在dwm層先計算出多個小的中間表,然後再拼接成一張dws的寬表。
由於寬和窄的界限不易界定,也可以去掉dwm這一層,只留dws層,將所有的資料在放在dws亦可。
在這裡,主要是提供給資料產品和資料分析使用的資料,一般會存放在 es、postgresql、redis等系統中供線上系統使用,也可能會存在 hive 或者 druid 中供資料分析和資料探勘使用。
比如我們經常說的報表資料,一般就放在這裡。
4、維表層(dimension)
最後補充乙個維表層,維表層主要包含兩部分資料:
至此,我們講完了資料分層設計中每一層的含義,這裡做乙個總結便於理解,如下圖:
三、舉個栗子
在ods層中:由於各端的開發團隊不同或者各種其它問題,使用者的訪問日誌被分成了好幾張表上報到了我們的ods層。
在dwm層:我們會從dwd層中選取業務關注的核心維度來做聚合操作,比如只保留人、商品、裝置和頁面區域維度。類似的,我們這樣做了很多個dwm的中間表
四、技術實踐
既然談到了資料分層,那不同的層次中會用到什麼計算引擎和儲存系統呢,本節來簡單分享一下。
資料層的儲存一般如下:
五、思考
本文將思考和總結一下資料分層的原則是什麼?為什麼要這樣分層?每層之間的界限又是什麼?
我個人從這幾個角度來理解資料分層的劃分:
從能力範圍來講:我們希望80%需求由20%的表來支援。直接點講,就是大部分(80%以上)的需求,都用dws的表來支援就行,dws支援不了的,就用dwm和dwd的表來支援,這些都支援不了的極少一部分資料需要從原始日誌中撈取。結合第一點來講的話就是:80%的需求,我們都希望以對應用很友好的方式來支援,而不是直接暴露給應用方原始日誌。
從資料聚合程度來講:我們希望,越上層資料的聚合程度越高,看上面的例子即可,ods和dwd的資料基本是原始日誌的粒度,不做任何聚合操作,dwm做了輕度的聚合操作只保留了通用的維度,dws做了更高的聚合操作,可能只保留一到兩個能表徵當前描述主體的維度。從這個角度來看,我們又可以理解為我們是按照資料的聚合程度來劃分資料層次的。
六、總結
分層結構的生活例子 層次分析法經典案例
層次分析法經典案例 篇一 層次分析法步驟 層次分析法例項與步驟 結合乙個具體例子,說明層次分析法的基本步驟和要點。案例分析 市政工程專案建設決策 層次分析法問題提出 市政部門管理人員需要對 修建一項市政工程專案進行決策,可選擇的方案是修建通往旅遊區的高速路 簡稱建高速路 或修建城區地鐵 簡稱建地鐵 ...
資料分析報告的通用結構
根據閱讀 資料分析師養成寶典 及個人理解後所得。明確業務目標 資料準備 資料指標與分析 撰寫分析報告 了解必須的業務資訊,明確問題型別,因為不同的問題型別,要解決的問題不同。問題型別 必解決的問題 可延伸的問題 描述類發生了什麼事 無因果類 發生了什麼事,為什麼會發生 無 類 發生了什麼事,未來會如...
2,分層的思想
在分解複雜的軟體系統時,軟體設計者使用最多的技術之一就是分層,在計算機本身的架構中也可以看到。存cpu指令集和裝置驅動程式,在到內部晶元和各個邏輯閘電路。網路中,ftp層架構在tcp之上,tcp架構 在ip之上,ip架構又在乙太網之上。在這種組織方式下 上層使用了下層定義的各種服務,而下層對上層一無...