那些被問懵逼的數倉面試題

  數倉構建:

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.高效的數據組織形式

分層的價值

【易維護】

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

【高性能】

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

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

【簡單化】

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

【歷史性】

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章