被問懵逼的數倉面試


數倉構建:

1). 前期業務調研 需求調研 數據調研 技術選型

2). 提煉業務模型,總線矩陣,划分主題域;

3). 定制規范 命名規范、開發規范、流程規范

4). 數倉架構分層:一般分為

操作數據層(ODS)、公共維度模型層(CDM)和應用數據層(ADS),其中公共維度模型層包括明細數據層(DWD和匯總數據層(DWS)

公共維度模型層(CDM):存放明細事實數據、維表數據及公共指標匯總數據,其中明細事實數據、維表數據一般根據ODS層數據加工生成:公共指標匯總數據一般根據維表數據和明細事實數據加工生成。

CDM層又細分為DWD層和DWS層,分別是明細數據層和匯總數據層,采用維度模型方法作為理論基礎,更多地采用一些維度退化手法,將維度退化至事實表中,減少事實表和維表的關聯,提高明細數據表的易用性:同時在匯總數據層,加強指標的維度退化,采取更多的寬表化手段構建公共指標數據層,提升公共指標的復用性,減少重復加工。

應用數據層(ADS):存放數據產品個性化的統計指標數據,根據CDM層與ODS層加工生成。

 5).選擇合適的數據模型,不同的行業涉選取的模型近不相同,合適的模型,更利於在數據存儲,計算,開發,安全,以及數據查詢的效率,更能體現數倉的價值。

 綜上所述:數倉建設這個問題的范圍過於大,它包含了一個0-1的過程,此處只做大方面的回答,具體的細節問題還需另外討論。

傳統數倉和大數據數倉的異同?有哪些大的變化?

答:其區別主要數數倉數據存儲的地方不同,傳統數倉數據存儲在mysql/oracle等關系型數據庫上,大數據數倉存儲在hadoop平台的hive中(實際上是HDFS中),當然也有其他的數倉產品比如TD、greenplum等。

我接觸過的傳統數倉技術架構是使用kettle做ETL工具,數據保存在mysql中,使用MSTR+java開發的數據平台做可視化,隨着數據量逐漸增大,事實表條數達到千萬級,kettle逐漸變得不穩定,

單表做拉鏈的任務的執行時間也指數級增加,從1/2h到了6/7h。

公司考慮使用hadoop平台的hive做數據倉庫,報表層數據保存在mysql中,使用tableau做報表系統,這樣不用擔心存儲問題、計算速度也大大加快了。

在此基礎上,公司開放了hue給各個部門使用,這樣簡單的提數工作可以由運營自己來操作。

使用presto可以做mysql、hive的跨庫查詢,使用時要注意presto的數據類型非常嚴格。

數倉最重要的是什么?

答:數據的准確性,記得在一個統計網站上看過,好多數倉因為數據不准確被終止。

    數據的真正價值在於數據驅動決策,通過數據指導運營,在一個不准確的數據驅動下,結果可想而知。

如何保證數據的准確性?

    元數據的建設與管理是其中重要的一個環節

    元數據建設的目標是打通數據接入到加工 ,再到數據消費整個鏈路,規范元數據體系與模型,提供統一的元數據服務出口,保障元數據產出的穩定性和質量。

    首先梳理清楚元倉底層數據,對元數據做分類,如計算元數據、存儲元數據、質量元數據等,減少數據重復建設,保障數據的唯一性。

另外, 要豐富表和字段使用說明,方便使用和理解。根據元倉底層數據構建元倉中間層,建設元數據基礎寬表,也就是元數據中間層,打通從數據產生到消費整個鏈路。

 也可在粒度、規范等方面展開,見仁見智。

 如何做數據治理?數據資產管理呢?

 在明確數據治理是數據管理的一部分之后,下一個問題就是定義數據管理。

治理相對容易界定,它是用來明確相關角色、工作責任和工作流程的,確保數據資產能長期有序地、可持續地得到管理。

而數據管理則是一個更為廣泛的定義,它與任何時間采集和應用數據的可重復流程的方方面面都緊密相關。

其實在數倉的整個鏈路中數據治理的理念是滲入其中的,在ETL過程中開發人員會對數據清洗這其實就是治理的一部分,再加上后期數據資產的管理和落定都有數據治理的滲入。

 如何控制數據質量?

答:

  1.數據質量保證原則:完整性,准確性,數據質量,及時性,一致性

  2.數據質量方法:數據資產等級的划定

  3.數據加工過程卡點校驗

  4.風險點監控:針對在線或者離線數據的監控

  5.質量衡量:故障等級的划定以及數據質量的事件的記錄

元數據的理解?元數據管理系統?

答:元數據主要記錄數據倉庫中模型的定義、各層級間的映射關系、監 控數據倉庫的數據狀態及 ETL 的任務運行狀態。 

元數據有重要的應用價值,是數據管理、數據內容、數據應用的基礎,在數據管理方面為集團數據提供在計算、存儲、成本、質量、安全、模型等治理領域上的數據支持。

元數據管理系統:  首先梳理清楚元倉底層數據,對元數據做分類,如計算元數據、存儲元數據、質量元數據等,減少數據重復建設,保障數據的唯一性。

另外, 要豐富表和字段使用說明,方便使用和理解。根據元倉底層數據構建元倉中間層,建設元數據基礎寬表,也就是元數據中間層,打通從數據產生到消費整個鏈路

 

 數倉如何分層的?及每一層的作用?思考:為什么要這么分層?

答:如何架構分層?

  結合Inmon和Kimball的集線器式和總線式的數據倉庫的優點,分層可為ODS【-MID】-DW-DM-OLAP/OLAM/app(不同企業略有差異)

 

ODS層是將OLTP數據通過ETL同步到數據倉庫來作為數據倉庫最基礎的數據來源。在這個過程中,數據經過了一定的清洗,比如字段的統一,臟數據的去除等,但是數據的粒度是不會變化的。ODS層的數據可以只保留一定的時間。

  MID中間層是采用Inmon集線器架構的方式,使用范式建模(貼源)的方法。這一層主要是做規范化的事情,比如應用庫表非規范化,字段格式復雜(json格式)需做一些處理。這一層不是必須有的。也不會對外開放使用。范式建模保證了數據一致性、唯一性、正確性。

  DW-DM層是采用Kimball的總線式的數據倉庫架構,針對部門(比如財務部門)或者某一主題(比如商戶、用戶),通過維度建模(推薦星型模型),構建一致性維度,原子粒度的數據是DW層,按照實體或者主題經過一定的匯總,建設數據集市模型。數據集市可以為OLAP提供服務。

 

  為什么要分層的思考?

空間換時間。通過建設多層次的數據模型供用戶使用,避免用戶直接使用操作型數據,可以更高效的訪問數據。  把復雜問題簡單化。講一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護數據的准確性,當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的步驟開始修復。  便於處理業務的變化。隨着業務的變化,只需要調整底層的數據,對應用層對業務的調整零感知.01.高效的數據組織形式

  分層的價值

易維護

  面向主題的特性決定了數據倉庫擁有業務數據庫所無法擁有的高效的數據組織形式,更加完整的數據體系,清晰的數據分類和分層機制。因為所有數據在進入數據倉庫之前都經過清洗和過濾,使原始數據不再雜亂無章,基於優化查詢的組織形式,有效提高數據獲取、統計和分析的效率。

  02.時間價值【高性能

  數據倉庫的構建將大大縮短獲取信息的時間,數據倉庫作為數據的集合,所有的信息都可以從數據倉庫直接獲取,數據倉庫的最大優勢在於一旦底層從各類數據源到數據倉庫的ETL流程構建成型,那么每天就會有來自各方面的信息通過自動任務調度的形式流入數據倉庫,從而使一切基於這些底層信息的數據獲取的效率達到迅速提升。

  從應用來看,使用數據倉庫可以大大提高數據的查詢效率,尤其對於海量數據的關聯查詢和復雜查詢,所以數據倉庫有利於實現復雜的統計需求,提高數據統計的效率。

 

  03.集成價值【簡單化

  數據倉庫是所有數據的集合,包括日志信息、數據庫數據、文本數據、外部數據等都集成在數據倉庫中,對於應用來說,實現各種不同數據的關聯並使多維分析更加方便,為從多角度多層次地數據分析和決策制定提供的可能。

 

  04.歷史數據【歷史性

  記錄歷史是數據倉庫的特性之一,數據倉庫能夠還原歷史時間點上的產品狀態、用戶狀態、用戶行為等,以便於能更好的回溯歷史,分析歷史,跟蹤用戶的歷史行為,更好地比較歷史和總結歷史,同時根據歷史預測未來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM