1.OLTP和OLAP區別
OLTP(On-Line Transaction?Processing)即聯機事務處理,也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用戶操作快速響應的方式之一,特點是事務操作頻繁,數據量小。
OLAP(On-Line Analytical Processing)即聯機分析處理,支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。這類系統的特點是沒有事務性操作,主要是查詢操作,數據量大。
對比項目 | OLTP | OLAP |
功能 | 面向交易的事務處理 | 面向分析查詢 |
設計 | 面向業務 | 面向主題 |
數據 | 最新數據,二維數據 | 歷史數據,多維數據 |
存儲 | M,G ( 存儲單位 ) | T、P、E |
響應時間 | 快 | 慢 |
用戶 | 業務操作人員 | 管理決策人員 |
2.什么是數據倉庫
????? 數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、數據集成的(Integrated)、相對穩定(非易失)的(Non-Volatile)、反映歷史變化(時變)(Time Variant)的數據集合,用于支持管理決策(Decision Making Support)。
3.什么是維度分析
3.1什么是維度
維度就是看問題的角度,給你一個數據表,怎么分析,怎么看就是屬于維度范疇
比如2025年的訂單數據,怎么分析,可以從時間(月份)分析,商品質量分析,用戶分析,這個就是維度
維度分為定性維度和定量維度兩種,定性維度就是字符類型的特征,比如區域維度包括全國各省份;定量維度就是數值類型的特征,如價格區間、銷量區間等,如價格區間維度分為0--100、100-1000兩個區間,可以按價格區間維度來對指標進行分析.
3.2什么是指標
指標就是從維度方向得到的數據進行進一步考量產生的度量值,常見的比如count(),sum(),max()等等.
指標分為絕對數值和相對數值,絕對數值反映具體的大小和多少,如價格、銷量、分數等;相對數值反映一定的程度,如及格率、購買率、漲幅等。
綜上:維度分析就是針對一個主題,,從不同維度進行統計分析,從而得到各種指標的過程
4.什么是維度分層
通常在分析結果中首先看到的是一個總數,比如全年課程購買量,然后會詳細去看每個季度、每個月的課程購買量,全年、季度、月這些屬于時間維度的一個層次,年、季度、月是這個層次的三個級別;再比如按地區分析課程購買量,全國、省、市、縣屬于地區維度的一個層次,層次中共有四個級別。
相當于將維度進行細分。細分兩層,則維度包含一個層次,多個級別。 細分三層,則維度包含多個層次,多個級別。
eg:
時間維度:
一個層次四個級別:年、月、天、小時
課程維度:
課程名稱:只有一個級別,每門課程的名稱
課程分類:兩個級別,大類和小類
課程難度:只有三個級別,簡單、一般、難
課程等級:只有三個級別,初、中、高
地區維度:
一個層次三個級別:省、市、縣
5.什么是下鉆,上卷
把獲取高級別的匯總信息的過程叫上卷,把獲取低級別的明細信息的過程叫下鉆,比如:課程訪問量分析,時間維度有四個級別,分別是年、月、天、小時,現在我們某個級別分析每天的課程訪問量,比如按天分析課程訪問量,此時我們可以按小時下鉆分析,得出一天內每小時的課程訪問量,也可以按月上卷,得到月度的課程訪問量。
下鉆維度:
天、小時
上卷維度:
年、月
6.什么是數倉建模?建模種類有哪些?
數倉建模簡單來講就是在hive中建表,建表思路和數倉怎么去設計的方案。兩種:
三范式建模法:基于減少數據冗余
?????定義:要求一個數據庫表內的每一個數據項都是不可再分割的原子數據項,并確保每一個表只圍繞一個主題,且表中的字段都依賴于主鍵。
- 優點:
- 減少數據冗余
- 提高數據一致性:由于數據的更新只需在一個地方進行,然后通過關聯關系自動反映到其他相關表中,從而保證了數據的一致性。例如,當員工的部門發生變更時,只需在員工部門信息表中更新一次,其他相關表中的員工部門信息就會通過關聯關系自動更新。
維度建模法:基于分析
????? 維度數據模型應用于自下向上的數據倉庫架構。簡稱DM(Dimensional modeling),維度數據模型是一種趨向于支持最終用戶對數據倉庫進行查詢的設計技術,是圍繞性能和易理解性構建的。維度模型是按照用戶看待或分析數據的角度來組織數據。
??????維度建模的兩個核心概念:事實表和維度表。
7.什么是事實表和維度表?
事實表:
????? 記錄了特定事件的數字化信息,一般由數值型數字和指向維度表的外鍵組成。事實表的設計依賴于業務系統,事實表的數據就是業務系統的指標數據。數據分析的實質就是基于事實表開展的計算操作。
分類:
- 事務事實表:記錄的事務層面的事實,保存的是最原子的數據,也稱“原子事實表”或“交易事實表”。事務事實表中的數據在事務事件發生后產生,數據的粒度通常是每個事務一條記錄。一旦事務被提交,事實表數據被插入,數據就不再進行更改,其更新方式為增量更新。溝通中常說的事實表,大多指的是事務事實表。
- 周期快照事實表:(加快查詢速率)
Periodicsnapshot fact table,周期快照事實表以具有規律性的、可預見的時間間隔來記錄事實,時間間隔如每天、每月、每年等等。典型的例子如銷售日快照表、庫存日快照表等。
想象以下場景,需要統計一個季度的商品成交量怎么去做?如果用一個季度內的事實事務表進行計算,雖然可以得出結果但是效率太低,在實際生產中并不可行,因此,需要定期對指定的度量進行整合,作為周期快照表用于下游應用。一般設計事實表時,事務事實表和周期快照表是成對設計的,大部分的周期表由事務表加工產生,還有部分特殊數據是直接應用系統產生(如訂單評價)。
-
累積快照事實表:
Accumulatingsnapshot fact table,累積快照事實表和周期快照事實表有些相似之處,它們存儲的都是事務數據的快照信息。但是它們之間也有著很大的不同,周期快照事實表記錄的確定的周期的數據,而累積快照事實表記錄的不確定的周期的數據。
累積快照事實表代表的是完全覆蓋一個事務或產品的生命周期的時間跨度,它通常具有多個日期字段,用來記錄整個生命周期中的關鍵時間點。例如訂單累計快照事實表會有付款日期,發貨日期,收貨日期等時間點。
特點 | 事務事實 | 周期快照事實 | 累積快照事實 |
時間/時期 | 時間 | 時期 | 時間跨度較短的多個時點 |
粒度 | 每行代表一個事務事件 | 每行代表一個時間周期 | 每行代表一個業務周期 |
事實表加載 | 新增 | 新增 | 新增和修改 |
事實表更新 | 不更新 | 不更新 | 新事件產生時更新 |
時間維 | 業務日期 | 時期末 | 多個業務過程的完成日期 |
事實 | 事務活動 | 時間周期內的績效 | 限定的多個業務階段內的績效 |
維度表:
???? 在進行事實表的統計分析時,用到的外鍵(其他表的主鍵),這個其他表就是維度表,維度表不一定存在,而維度一定存在。
??? 分類:
- 高基數維度數據:數據量大,而且表數據經常變化,一般是用戶資料表、商品資料表類似的表。
- 低基數維度數據:數據量小,而且不經常變化一般是配置表,比如枚舉值對應的中文含義,或者日期維表、地理維表等。
注:基數指的是一個字段中不同值的個數,比如主鍵列具有唯一值,所以具有最高的基數,而性別枚舉值(日期、地區等)這樣的列的基數就很低。
8.有哪些維度建模中建模方法?
1.星型模型:
????????? 是一種多維的數據關系。一個事實表為中心,多個維度表環繞周圍。一個星型模型中可以有一個或多個事實表,每個事實表可以引用任意數量的維度表。
2.雪花模型:(維護不便,sql分析難度加大)(生產中盡量減少,去優化它們)
?????????當有一個或多個維表沒有直接連接到事實表上,而是通過其他維表連接到事實表上時,就像多個雪花連接在一起,故稱雪花模型。雪花模型是對星型模型的擴展,它對星型模型的維表進一步層次化,原有的各維表可能被擴展為小的事實表,形成一些局部的 "層次 " 區域,這些被分解的表都連接到主維度表而不是事實表。
模型之間共享,維度一樣的可以合成一個
9.什么是漸變維(SCD)
??????維度可以根據變化劇烈程度主要分為無變化維度和變化維度。例如一個人的相關信息,身份證號、姓名和性別等信息數據屬于不變的部分;而婚姻狀態、工作經歷、工作單位和培訓經歷等屬于可能會變化的字段。
????? 為了減少維度變化帶來的分析誤差,出現了SCD
分類:
1.SCD1(緩慢漸變類型1)
??? 通過更新維度記錄直接覆蓋已存在的值。不維護記錄的歷史。一般用于修改錯誤的數據,即歷史數據就是錯誤數據,除此沒有他用。
總結:將錯誤數據重寫
2.SCD2(緩慢漸變類型2)
????在源數據發生變化時,給維度記錄建立一個新的“版本”記錄,從而維護維度歷史。SCD2不刪除、不修改已存在的數據。SCD2也叫拉鏈表。
????通過起始時間(valid From)來標識,Valid To(封鏈時間)為 NULL 的標識當前數據,也可以用2999,3000,9999等等比較大的年份。數倉內部需要保持統一。每個版本都會產生一行新的數據。eg:
總結:形成拉鏈表維護數據,適用保存歷史,會造成冗余
3.SCD3(緩慢漸變類型3)
??? 修改數據時去增加列(修改的字段),弊端為維護麻煩,需次次修改表結構(增加列)
10.為什么要數倉分層?怎么分
????? 為了自己的數據能夠有秩序地流轉,數據的整個生命周期能夠清晰明確被設計者和使用者感知到。
- 清晰數據結構:每一個數據分層都有它的作用域和職責,在使用表的時候能更方便地定位和理解。
- 復雜問題簡單化:將一個復雜的任務分解成多個步驟來完成,每一層解決特定的問題。
- 便于維護:當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的步驟開始修復。
- 減少重復開發:規范數據分層,開發一些通用的中間層數據,能夠減少重復開發的工作量。
- 高性能:數據倉庫的構建將大大縮短獲取信息的時間,數據倉庫作為數據的集合,所有的信息都可以從數據倉庫直接獲取,尤其對于海量數據的關聯查詢和復雜查詢,所以數據倉庫分層有利于實現復雜的統計需求,提高數據統計的效率。
分層方法:
- 源數據層(ODS)
此層數據無任何更改,直接沿用外圍系統數據結構和數據,不對外開放;為臨時存儲層,是接口數據的臨時存儲區域,為后一步的數據處理做準備。
???? 2.數據倉庫層(DW)
DW 層的數據應該是一致的、準確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。
此層可以細分為三層:
明細層DWD(Data Warehouse Detail):存儲明細數據,此數據是最細粒度的事實數據。該層一般保持和ODS層一樣的數據粒度,并且提供一定的數據質量保證。同時,為了提高數據明細層的易用性,該層會采用一些維度退化手法,將維度退化至事實表中,減少事實表和維表的關聯。
中間層DWM(Data WareHouse Middle):存儲中間數據,為數據統計需要創建的中間表數據,此數據一般是對多個維度的聚合數據->(周期快照事實表),此層數據通常來源于DWD層的數據。
業務層DWS(Data WareHouse Service):存儲寬表數據,此層數據是針對某個業務領域的聚合數據,應用層的數據通常來源與此層,為什么叫寬表,主要是為了應用層的需要在這一層將業務相關的所有數據統一匯集起來進行存儲,方便業務層獲取。此層數據通常來源與DWD和DWM層的數據。
在實際計算中,如果直接從DWD或者ODS計算出寬表的統計指標,會存在計算量太大并且維度太少的問題,因此一般的做法是,在DWM層先計算出多個小的中間表,然后再拼接成一張DWS的寬表。由于寬和窄的界限不易界定,也可以去掉DWM這一層,只留DWS層,將所有的數據在放在DWS亦可。
???? 3.數據應用層(DA)
前端應用直接讀取的數據源;根據報表、專題分析的需求而計算生成的數據。