别再瞎搞数仓了!BAT内部大神:数据仓库不是谁都可以建的
在我沒有進互聯網之前,我一直以為數據倉庫是所有企業進行數據資產管理的必備工作,但直到我去了很多家企業搞數據之后才發現,原來并不是所有的企業都適合做數據倉庫,更不要說數據中臺了。
很多企業現在做數據倉庫,完全就是在瞎搞!
我做過一些公司的數據工作,我發現國內很多企業現在基本上都是“數倉+數據分析平臺”的標準配置,前端用數據分析平臺進行數據的處理和加工,然后用可視化工具進行數據展示,后臺構建數據倉庫進行數據存儲和ETL處理。
?
但是大多數企業的ETL過程都非常簡單,而且無論是哪種數據倉庫,都不會是一勞永逸的,隨著業務的發展和變化會有調整是必然的,需要保證的是基礎層的穩定、核心指標口徑的穩定,前者靠建模能力,后者靠業務與行業理解能力。
有數據倉庫和沒有數據倉庫的區別
?
在沒有數據倉庫的時候,企業里的文件和數據基本上都是對接業務系統,這樣就會造成數據的冗亂。而數據倉庫就是為了解決這個問題,數倉是一個面向主題的、集成的、相對穩定的,反應歷史變化的數據集合。
數據分析中的工作最重要的就是數據處理工作,由于數據分析對數據質量、格式的要求比較高,對數據的理解也必須非常深刻,使得數據契合業務需求也要一定的過程,根據我做數據分析的經驗,在整個數據分析流程中,用于數據處理的時間往往要占據70%以上。
所以,如何高效、快速地進行數據理解和處理,往往決定了數據分析項目的進度和質量。
而數據倉庫具有集成、穩定、高質量等特點,基于數據倉庫為數據分析提供數據,往往能夠更加保證數據質量和數據完整性。
數據倉庫模型是數據模型中針對特定的數據倉庫應用系統的一種特定的數據模型,一般的來說,我們數據倉庫模型分為幾下幾個層次,如下圖所示。
數據倉庫模型
通過上面的圖形,我們能夠很容易地看出在整個數據倉庫得建模過程中,我們需要經歷一般四個過程:
- 業務建模,生成業務模型,主要解決業務層面的分解和程序化。
- 領域建模,生成領域模型,主要是對業務模型進行抽象處理,生成領域概念模型。
- 邏輯建模,生成邏輯模型,主要是將領域模型的概念實體以及實體之間的關系進行數據庫層次的邏輯化。
- 物理建模,生成物理模型,主要解決,邏輯模型針對不同關系型數據庫的物理化以及性能等一些具體的技術問題。
因此,在整個數據倉庫的模型的設計和架構中,既涉及到業務知識,也涉及到了具體的技術,我們既需要了解豐富的行業經驗,同時,也需要一定的信息技術來幫助我們實現我們的數據模型,最重要的是,我們還需要一個非常適用的方法論,來指導我們自己針對我們的業務進行抽象,處理,生成各個階段的模型。
一、 數據理解
數據倉庫模型
我們都知道,數據倉庫是面向主題的,所以其自身與業務結合就相對緊密和完善,更方便數據分析師基于數據理解業務。而數據倉庫是有很多的主題組成,包括了很多的數據。當我們需要對數據進行分析的時候,如果理解數據倉庫的模型,數據理解也就水到渠成了。
第二、數據質量
?
我們在做數據分析的時候要求數據是干凈、完整的,而數據倉庫已經對源系統的數據進行了業務契合的轉換,以及臟數據的清洗,這就為數據分析的數據質量做了較好的保障。
第三、數據跨系統關聯
?
數據跨系統關聯數據倉庫的一個簡單架構,各業務源系統的數據經過ETL過程后流入數據倉庫,當不同系統數據整合到數據倉庫之后,至少解決了數據分析中的兩個問題:
第一, 跨系統數據收集問題,在金融分析中同一個客戶的儲蓄交易和理財交易我們在同一張事實表就可以找到;
?
第二, 跨系統關聯問題,進行數據整合時,總是需要找到共同點來關聯來自不同系統的信息,而數據倉庫在ETL過程中就會整合相關客戶信息,完美解決跨系統關聯問題。
四、 如何建設數據模型
建設數據模型既然是整個數據倉庫建設中一個非常重要的關鍵部分,那么,怎么建設我們的數據倉庫模型就是我們需要解決的一個問題。
1、數據倉庫數據模型架構
數據倉庫的數據模型的架構和數據倉庫的整體架構是緊密關聯在一起的,我們首先來了解一下整個數據倉庫的數據模型應該包含的幾個部分。
?
從上圖我們可以看出,整個數據倉庫的數據模型可以分為大概 5 大部分:
- 系統記錄域(System of Record):這部分是主要的數據倉庫業務數據存儲區,數據模型在這里保證了數據的一致性。
- 內部管理域(Housekeeping):這部分主要存儲數據倉庫用于內部管理的元數據,數據模型在這里能夠幫助進行統一的元數據的管理。
- 匯總域(Summary of Area):這部分數據來自于系統記錄域的匯總,數據模型在這里保證了分析域的主題分析的性能,滿足了部分的報表查詢。
- 分析域(Analysis Area):這部分數據模型主要用于各個業務部分的具體的主題業務分析。這部分數據模型可以單獨存儲在相應的數據集市中。
- 反饋域(Feedback Area):可選項,這部分數據模型主要用于相應前端的反饋數據,數據倉庫可以視業務的需要設置這一區域。
通過對整個數據倉庫模型的數據區域的劃分,我們可以了解到,一個好的數據模型,不僅僅是對業務進行抽象劃分,而且對實現技術也進行具體的指導,它應該涵蓋了從業務到實現技術的各個部分。
2、數據倉庫建模階段劃分
我們前面介紹了數據倉庫模型的幾個層次,下面我們講一下,針對這幾個層次的不同階段的數據建模的工作的主要內容:
(1)業務建模,這部分建模工作,主要包含以下幾個部分:
- 劃分整個單位的業務,一般按照業務部門的劃分,進行各個部分之間業務工作的界定,理清各業務部門之間的關系。
- 深入了解各個業務部門的內具體業務流程并將其程序化。
- 提出修改和改進業務部門工作流程的方法并程序化。
- 數據建模的范圍界定,整個數據倉庫項目的目標和階段劃分。
(2)領域概念建模,這部分得建模工作,主要包含以下幾個部分:
- 抽取關鍵業務概念,并將之抽象化。
- 將業務概念分組,按照業務主線聚合類似的分組概念。
- 細化分組概念,理清分組概念內的業務流程并抽象化。
- 理清分組概念之間的關聯,形成完整的領域概念模型。
(3)邏輯建模,這部分的建模工作,主要包含以下幾個部分:
- 業務概念實體化,并考慮其具體的屬性
- 事件實體化,并考慮其屬性內容
- 說明實體化,并考慮其屬性內容
(4)物理建模,這部分得建模工作,主要包含以下幾個部分:
- 針對特定物理化平臺,做出相應的技術調整
- 針對模型的性能考慮,對特定平臺作出相應的調整
- 針對管理的需要,結合特定的平臺,做出相應的調整
- 生成最后的執行腳本,并完善之。
從我們上面對數據倉庫的數據建模階段的各個階段的劃分,我們能夠了解到整個數據倉庫建模的主要工作和工作量,希望能夠對我們在實際的項目建設能夠有所幫助。
總結
以上是生活随笔為你收集整理的别再瞎搞数仓了!BAT内部大神:数据仓库不是谁都可以建的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初学C语言没有项目练手怎么行,这17个小
- 下一篇: 深入解读Gartner 2021年《分析