如何做網(wǎng)站品類廣州軟件系統(tǒng)開發(fā)seo推廣
文章目錄
- 1.什么是數(shù)據(jù)倉庫?
- 2.ETL是什么?
- 3.數(shù)據(jù)倉庫和數(shù)據(jù)庫的區(qū)別(OLTP和OLAP的區(qū)別)
- 4.數(shù)據(jù)倉庫和數(shù)據(jù)集市的區(qū)別
- 5.維度分析
- 5.1 什么是維度?
- 5.2什么是指標(biāo)?
- 6.什么是數(shù)倉建模?
- 7.事實(shí)表
- 7.維度表
- 8.維度建模的三種模型
- 9.緩慢漸變維(SCD)
- 10.數(shù)據(jù)倉庫分層
- 10.1為什么要分層?
- 10.2數(shù)倉分層
- 10.3什么叫做維度退化?
- 11.構(gòu)建數(shù)據(jù)倉庫相關(guān)組件
- 11.1oozie
- 11.2sqoop
1.什么是數(shù)據(jù)倉庫?
- 概念
存儲數(shù)據(jù)的倉庫, 主要是用于存儲過去既定發(fā)生的歷史數(shù)據(jù), 對這些數(shù)據(jù)進(jìn)行數(shù)據(jù)分析的操作, 從而對未來提供決策支持 - 四大特征
- 面向于主題的: 面向于分析, 分析的內(nèi)容是什么 什么就是我們的主題
- 集成性: 數(shù)據(jù)是來源于各個(gè)數(shù)據(jù)源, 將各個(gè)數(shù)據(jù)源數(shù)據(jù)匯總在一起
- 非易失性(穩(wěn)定性): 存儲在數(shù)據(jù)倉庫中數(shù)據(jù)都是過去既定發(fā)生數(shù)據(jù), 這些數(shù)據(jù)都是相對比較穩(wěn)定的數(shù)據(jù), 不會發(fā)生改變
- 時(shí)變性: 隨著的推移, 原有的分析手段以及原有數(shù)據(jù)可能都會出現(xiàn)變化(分析手動更換, 以及數(shù)據(jù)新增)
2.ETL是什么?
抽取 轉(zhuǎn)換 加載
從數(shù)據(jù)源將數(shù)據(jù)灌入到ODS層, 以及從ODS層將數(shù)據(jù)抽取出來, 對數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理工作, 最終將數(shù)據(jù)加載到DW層, 然后DW層對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 將統(tǒng)計(jì)分析后的數(shù)據(jù)灌入到DA層, 整個(gè)全過程都是屬于ETL范疇
狹義上ETL: 從ODS層到DW層過程
3.數(shù)據(jù)倉庫和數(shù)據(jù)庫的區(qū)別(OLTP和OLAP的區(qū)別)
OLTP:聯(lián)機(jī)事務(wù)處理
OLAP:聯(lián)機(jī)分析處理
- 數(shù)據(jù)庫(OLTP): 面向于事務(wù)(業(yè)務(wù))的 , 主要是用于捕獲數(shù)據(jù) , 主要是存儲的最近一段時(shí)間的業(yè)務(wù)數(shù)據(jù), 交互性強(qiáng),一般不允許出現(xiàn)數(shù)據(jù)冗余
- 數(shù)據(jù)倉庫(OLAP): 面向于分析(主題)的 , 主要是用于分析數(shù)據(jù), 主要是存儲的過去歷史數(shù)據(jù) , 交互性較弱 ,可以允許出現(xiàn)一定的冗余
4.數(shù)據(jù)倉庫和數(shù)據(jù)集市的區(qū)別
-
數(shù)據(jù)倉庫其實(shí)指的集團(tuán)數(shù)據(jù)中心: 主要是將公司中所有的數(shù)據(jù)全部都聚集在一起進(jìn)行相關(guān)的處理操作 (ODS層),此操作一般和主題基本沒有什么太大的關(guān)系
-
數(shù)據(jù)的集市(小型數(shù)據(jù)倉庫): 在數(shù)據(jù)倉庫基礎(chǔ)之上, 基于主題對數(shù)據(jù)進(jìn)行抽取處理分析工作, 形成最終分析的結(jié)果
一個(gè)數(shù)據(jù)倉庫下, 可以有多個(gè)數(shù)據(jù)集市
5.維度分析
5.1 什么是維度?
維度一般指的分析的角度, 看待一個(gè)問題的時(shí)候, 可以多個(gè)角度來看待, 而這些角度指的就是維度
比如: 有一份2020年訂單數(shù)據(jù), 請嘗試分析
可以從時(shí)間, 地域 , 商品, 來源 , 用戶…
- 維度的分類:
- 定性維度: 指的計(jì)算每天 每月 各個(gè)的維度 , 一般來說定性維度的字段都是放置在group by 中
- 定量維度: 指的統(tǒng)計(jì)某一個(gè)具體的維度或者某一個(gè)范圍下信息, 比如說: 2020年度訂單額, 統(tǒng)計(jì)20~30歲區(qū)間人群的人數(shù) ,一般來說這種維度的字段都是放置在where中
維度的下鉆和上卷: 以某一個(gè)維度為基準(zhǔn), 往細(xì)化統(tǒng)計(jì)的過程稱為下鉆, 往粗粒度稱為上卷
比如: 按照 天統(tǒng)計(jì), 如果需要統(tǒng)計(jì)出 小時(shí), 指的就是下鉆, 如果需要統(tǒng)計(jì) 季度 月 年, 稱為上卷統(tǒng)計(jì)
5.2什么是指標(biāo)?
指標(biāo)是衡量事務(wù)發(fā)展的標(biāo)準(zhǔn),也叫度量,如價(jià)格,銷量等;指標(biāo)可以求和、求平均值等計(jì)算。
指標(biāo)的分類:
- 絕對指標(biāo): 計(jì)算具體的值指標(biāo)
count() sum() max() min() avg() - 相對指標(biāo): 計(jì)算比率問題的指標(biāo)
轉(zhuǎn)化率, 流失率, 同比
6.什么是數(shù)倉建模?
數(shù)倉建模指的是如何在hive中構(gòu)建表, 數(shù)倉建模中主要提供兩種理論來進(jìn)行數(shù)倉建模操作: 三范式建模和維度建模理論
-
三范式建模: 主要是存在關(guān)系型數(shù)據(jù)庫建模方案上, 主要規(guī)定了比如建表的每一個(gè)表都應(yīng)該有一個(gè)主鍵, 數(shù)據(jù)要經(jīng)歷的避免冗余發(fā)生等等
-
維度建模: 主要是存在分析性數(shù)據(jù)庫建模方案上, 主要一切以分析為目標(biāo), 只要是利于分析的建模, 都是OK的, 允許出現(xiàn)一定的冗余, 表也可以沒有主鍵
維度建模的兩個(gè)核心概念:事實(shí)表和維度表。
7.事實(shí)表
事實(shí)表: 事實(shí)表一般指的就是分析主題所對應(yīng)的表,每一條數(shù)據(jù)用于描述一個(gè)具體的事實(shí)信息, 這些表一般都是一坨主鍵(外鍵)和描述事實(shí)字段的聚集
事實(shí)表的分類:
- 事務(wù)事實(shí)表:
保存的是最原子的數(shù)據(jù),也稱“原子事實(shí)表”或“交易事實(shí)表”。溝通中常說的事實(shí)表,大多指的是事務(wù)事實(shí)表。 - 周期快照事實(shí)表:
周期快照事實(shí)表以具有規(guī)律性的、可預(yù)見的時(shí)間間隔來記錄事實(shí),時(shí)間間隔如每天、每月、每年等等
周期表由事務(wù)表加工產(chǎn)生 - 累計(jì)快照事實(shí)表:
完全覆蓋一個(gè)事務(wù)或產(chǎn)品的生命周期的時(shí)間跨度,它通常具有多個(gè)日期字段,用來記錄整個(gè)生命周期中的關(guān)鍵時(shí)間點(diǎn)
7.維度表
維度表: 指的在對事實(shí)表進(jìn)行統(tǒng)計(jì)分析的時(shí)候, 基于某一個(gè)維度, 這個(gè)維度信息可能在其他表中, 而這些表就是維度表
維度表并不一定存在, 但是維度是一定存在:
比如: 根據(jù)用戶維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表只存儲了用戶id, 此時(shí)需要關(guān)聯(lián)用戶表, 這個(gè)時(shí)候就是維度表
比如: 根據(jù)用戶維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表不僅僅存儲了用戶id,還存儲用戶名稱, 這個(gè)時(shí)候有用戶維度, 但是不需要用戶表的參與, 意味著沒有這個(gè)維度表
維度表的分類:
-
高基數(shù)維度表: 指的表中的數(shù)據(jù)量是比較龐大的, 而且數(shù)據(jù)也在發(fā)生的變化
例如: 商品表, 用戶表 -
低基數(shù)維度表: 指的表中的數(shù)據(jù)量不是特別多, 一般在幾十條到幾千條左右,而且數(shù)據(jù)相對比較穩(wěn)定
例如: 日期表,配置表,區(qū)域表
8.維度建模的三種模型
- 星型模型
- 特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 維度表與維度表之間沒有任何的依賴
- 反映數(shù)倉發(fā)展初期最容易產(chǎn)生模型
- 雪花模型
- 特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 維度表可以接著關(guān)聯(lián)其他的維度表
- 反映數(shù)倉發(fā)展出現(xiàn)了畸形產(chǎn)生模型, 這種模型一旦大量出現(xiàn), 對后期維護(hù)是非常繁瑣, 同時(shí)如果依賴層次越多, SQL分析的難度也會加大
- 此種模型在實(shí)際生產(chǎn)中,建議盡量減少這種模型產(chǎn)生
- 星座模型
- 特點(diǎn): 有多個(gè)事實(shí)表, 那么也就意味著有了多個(gè)分析的主題, 在事實(shí)表的周圍圍繞了多個(gè)維度表, 多個(gè)事實(shí)表在條件符合的情況下, 可以共享維度表
- 反映數(shù)倉發(fā)展中后期最容易產(chǎn)生模型
9.緩慢漸變維(SCD)
緩慢漸變維,即維度中的屬性可能會隨著時(shí)間發(fā)生改變
解決辦法:
- SCD1: 直接覆蓋, 不維護(hù)歷史變化數(shù)據(jù)
主要適用于: 對錯誤數(shù)據(jù)處理 - SCD2:不刪除、不修改已存在的數(shù)據(jù), 當(dāng)數(shù)據(jù)發(fā)生變更后, 會添加一條新的版本記錄的數(shù)據(jù), 在建表的時(shí)候, 會多加兩個(gè)字段(起始時(shí)間, 截止時(shí)間), 通過這兩個(gè)字段來標(biāo)記每條數(shù)據(jù)的起止時(shí)間 , 一般稱為拉鏈表
好處: 適用于保存多個(gè)歷史版本, 方便維護(hù)實(shí)現(xiàn)
弊端: 會造成數(shù)據(jù)冗余情況, 導(dǎo)致磁盤占用率提升 - SCD3: 通過在增加列的方式來維護(hù)歷史變化數(shù)據(jù)
好處: 減少數(shù)據(jù)的冗余, 適用于少量歷史版本的記錄以及磁盤空間不是特別充足情況
弊端: 無法記錄更多的歷史版本, 以及維護(hù)比較繁瑣
10.數(shù)據(jù)倉庫分層
10.1為什么要分層?
分層可以使數(shù)據(jù)層次清晰、依賴關(guān)系直觀
數(shù)據(jù)分層卻可以給我們帶來如下的好處:
- 清晰數(shù)據(jù)結(jié)構(gòu):每一個(gè)數(shù)據(jù)分層都有它的作用域和職責(zé),在使用表的時(shí)候能更方便地定位和理解。
- 復(fù)雜問題簡單化:將一個(gè)復(fù)雜的任務(wù)分解成多個(gè)步驟來完成,每一層解決特定的問題。
- 便于維護(hù):當(dāng)數(shù)據(jù)出現(xiàn)問題之后,可以不用修復(fù)所有的數(shù)據(jù),只需要從有問題的步驟開始修復(fù)。
- 減少重復(fù)開發(fā):規(guī)范數(shù)據(jù)分層,開發(fā)一些通用的中間層數(shù)據(jù),能夠減少重復(fù)開發(fā)的工作量。
- 高性能:數(shù)據(jù)倉庫的構(gòu)建將大大縮短獲取信息的時(shí)間,數(shù)據(jù)倉庫作為數(shù)據(jù)的集合,所有的信息都可以從數(shù)據(jù)倉庫直接獲取,尤其對于海量數(shù)據(jù)的關(guān)聯(lián)查詢和復(fù)雜查詢,所以數(shù)據(jù)倉庫分層有利于實(shí)現(xiàn)復(fù)雜的統(tǒng)計(jì)需求,提高數(shù)據(jù)統(tǒng)計(jì)的效率。
10.2數(shù)倉分層
-
ODS層: 源數(shù)據(jù)層
作用: 對接數(shù)據(jù)源, 和數(shù)據(jù)源的數(shù)據(jù)保持相同的粒度(將數(shù)據(jù)源的數(shù)據(jù)完整的拷貝到ODS層中)
注意:
如果數(shù)據(jù)來源于文本文件, 可能會需要先對這些文本文件進(jìn)行預(yù)處理(spark)操作, 將其中不規(guī)則的數(shù)據(jù), 不完整的數(shù)據(jù), 臟亂差的數(shù)據(jù)先過濾掉, 將其轉(zhuǎn)換為一份結(jié)構(gòu)化的數(shù)據(jù), 然后灌入到ODS層 -
DW層: 數(shù)據(jù)倉庫層
作用: 進(jìn)行數(shù)據(jù)分析的操作- DWD層: 明細(xì)層
作用: 用于對ODS層數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換工作 , 以及進(jìn)行少量的維度退化操作
少量:
1) 將多個(gè)事實(shí)表的數(shù)據(jù)合并為一個(gè)事實(shí)表操作
2) 如果維度表放置在ODS層 一般也是在DWD層完成維度退化 - DWM層: 中間層
作用: 1) 用于進(jìn)行維度退化操作 2) 用于進(jìn)行提前聚合操作(周期快照事實(shí)表) - DWS層: 業(yè)務(wù)層
作用: 進(jìn)行細(xì)化維度統(tǒng)計(jì)分析操作
- DWD層: 明細(xì)層
-
DA層: 數(shù)據(jù)應(yīng)用層
作用: 存儲DW層分析的結(jié)果, 用于對接后續(xù)的應(yīng)用(圖表, 推薦系統(tǒng)…)例如:
比如DWS層的數(shù)據(jù)表完成了基于訂單表各項(xiàng)統(tǒng)計(jì)結(jié)果信息, 但是圖表只需要其中銷售額, 此時(shí)從DWS層將銷售額的數(shù)據(jù)提取出來存儲到DA層 -
DIM層: 維度層
作用: 存儲維度表數(shù)據(jù)
10.3什么叫做維度退化?
維度退化是為了減少維度表的關(guān)聯(lián)工作
做法: 將數(shù)據(jù)分析中可能在維度表中需要使用的字段, 將這些字段退化到事實(shí)表中,
這樣后續(xù)在基于維度統(tǒng)計(jì)的時(shí)候, 就不需要在關(guān)聯(lián)維度表, 事實(shí)表中已經(jīng)涵蓋了維度數(shù)據(jù)了例如: 訂單表, 原有訂單表中只有用戶id, 當(dāng)我們需要根據(jù)用戶維度進(jìn)行統(tǒng)計(jì)分析的時(shí)候,
此時(shí)需要關(guān)聯(lián)用戶表, 找到用戶的名稱, 那么如果我們提前將用戶的名稱放置到訂單表中,
那么是不是就不需要關(guān)聯(lián)用戶表, 而則就是維度退化好處: 減少后續(xù)分析的表關(guān)聯(lián)情況
弊端: 造成數(shù)據(jù)冗余
11.構(gòu)建數(shù)據(jù)倉庫相關(guān)組件
11.1oozie
-
什么是oozie
Oozie是一個(gè)用于管理Apache Hadoop作業(yè)的工作流調(diào)度程序系統(tǒng)。Oozie由Cloudera公司貢獻(xiàn)給Apache的基于工作流引擎的開源框架,是用于Hadoop平臺的開源的工作流調(diào)度引擎,是用來管理Hadoop作業(yè),屬于web應(yīng)用程序,由Oozie client和Oozie Server兩個(gè)組件構(gòu)成,Oozie Server運(yùn)行于Java Servlet容器(Tomcat)中的web程序。
-
什么是工作流?
工作流(Workflow),指“業(yè)務(wù)過程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動化”。
-
能夠使用工作流完成的業(yè)務(wù)一般具有什么特點(diǎn)呢?
- 整個(gè)業(yè)務(wù)流程需要周期性重復(fù)干
- 整個(gè)業(yè)務(wù)流程可以被劃分為多個(gè)階段
- 每一個(gè)階段存在依賴關(guān)系,前序沒有操作, 后續(xù)也無法執(zhí)行
如果發(fā)現(xiàn)實(shí)際生產(chǎn)中的某些業(yè)務(wù)滿足了以上特征, 就可以嘗試使用工作流來解決
11.2sqoop
一個(gè)用戶進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出的工具, 主要是將關(guān)系型的數(shù)據(jù)庫(MySQL, oracle…)導(dǎo)入到hadoop生態(tài)圈(HDFS,HIVE,Hbase…) , 以及將hadoop生態(tài)圈數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫中