做數(shù)倉必須搞明白的各種名詞及關(guān)系,吐血整理
作為一個數(shù)據(jù)人,是不是經(jīng)常被各種名詞圍繞,是不是對其中很多概念認知模糊。有些詞雖然只有一字之差,但是它們意思完全不同,今天我們就來了解下數(shù)倉建設(shè)及數(shù)據(jù)分析時常見的一些概念含義及它們之間的關(guān)系。
本文結(jié)構(gòu)如下圖所示:
01數(shù)倉中常見概念解析
1. 實體
實體是指依附的主體,就是我們分析的一個對象,比如我們分析商品的銷售情況,如華為手機近半年的銷售量是多少,那華為手機就是一個實體;我們分析用戶的活躍度,用戶就是一個實體。當(dāng)然實體也可以現(xiàn)實中不存在的,比如虛擬的業(yè)務(wù)對象,活動,會員等都可看做一個實體。
實體的存在是為了業(yè)務(wù)分析,作為分析的一個篩選的維度,擁有描述自己的屬性,本身具有可分析的價值。
2. 維度
維度就是看待問題的角度,分析業(yè)務(wù)數(shù)據(jù),從什么角度分析,就建立什么樣的維度。所以維度就是要對數(shù)據(jù)進行分析時所用的一個量,比如你要分析產(chǎn)品銷售情況,你可以選擇按商品類別來進行分析,這就構(gòu)成一個維度,把所有商品類別集合在一起,就構(gòu)成了維度表。
3. 度量
度量是業(yè)務(wù)流程節(jié)點上的一個數(shù)值。比如銷量,價格,成本等等。
事實表中的度量可分為三類:完全可加,半可加,不可加。
- 完全可加的度量是最靈活,最有用的,比如說銷量,銷售額等,可進行任意維度匯總;
- 半可加的度量可以對某些維度匯總,但不能對所有維度匯總,差額是常見的半可加度量,它除了時間維度外,可以跨所有維度進行加法操作;
- 還有一種是完全不可加的,例如:比率。對于這類非可加度量,一種好的方法是,盡可能存儲非可加度量的完全可加分量,并在計算出最終的非可加事實前,將這些分量匯總到最終的結(jié)果集中。
4. 粒度
粒度就是業(yè)務(wù)流程中對度量的單位,比如商品是按件記錄度量,還是按批記錄度量。
在數(shù)倉建設(shè)中,我們說這是用戶粒度的事實表,那么表中每行數(shù)據(jù)都是一個用戶,無重復(fù)用戶;例如還有銷售粒度的表,那么表中每行都是一條銷售記錄。
選擇合適的粒度級別是數(shù)據(jù)倉庫建設(shè)好壞的重要關(guān)鍵內(nèi)容,在設(shè)計數(shù)據(jù)粒度時,通常需重點考慮以下因素:
- 要接受的分析類型、可接受的數(shù)據(jù)最低粒度和能存儲的數(shù)據(jù)量;
- 粒度的層次定義越高,就越不能在該倉庫中進行更細致的分析;
- 如果存儲資源有一定的限制,就只能采用較高的數(shù)據(jù)粒度劃分;
- 數(shù)據(jù)粒度劃分策略一定要保證:數(shù)據(jù)的粒度確實能夠滿足用戶的決策分析需要,這是數(shù)據(jù)粒度劃分策略中最重要的一個準則。
5. 口徑
口徑就是取數(shù)邏輯(如何取數(shù)的),比如要取的數(shù)是10歲以下兒童中男孩的平均身高,這就是統(tǒng)計的口徑。
6. 指標
指標是口徑的衡量值,也就是最后的結(jié)果。比如最近七天的訂單量,一個促銷活動的購買轉(zhuǎn)化率等。
一個指標具體到計算實施,主要有以下幾部分組成:
- 指標加工邏輯,比如count ,sum, avg
- 維度,比如按部門、地域進行指標統(tǒng)計,對應(yīng)sql中的group by
- 業(yè)務(wù)限定/修飾詞,比如以不同的支付渠道來算對應(yīng)的指標,微信支付的訂單退款率,支付寶支付的訂單退款率 。對應(yīng)sql中的where。
除此之外,指標本身還可以衍生、派生出更多的指標,基于這些特點,可以將指標進行分類:
- 原子指標:基本業(yè)務(wù)事實,沒有業(yè)務(wù)限定、沒有維度。比如訂單表中的訂單量、訂單總金額都算原子指標;
業(yè)務(wù)方更關(guān)心的指標,是有實際業(yè)務(wù)含義,可以直接取數(shù)據(jù)的指標。比如店鋪近1天訂單支付金額就是一個派生指標,會被直接在產(chǎn)品上展示給商家看。
但是這個指標卻不能直接從數(shù)倉的統(tǒng)一中間層里取數(shù)(因為沒有現(xiàn)成的事實字段,數(shù)倉提供的一般都是大寬表)。需要有一個橋梁連接數(shù)倉中間層和業(yè)務(wù)方的指標需求,于是便有了派生指標
- 派生指標:維度+修飾詞+原子指標。店鋪近1天訂單支付金額中店鋪是維度,近1天是一個時間類型的修飾詞,支付金額是一個原子指標;
維度:觀察各項指標的角度;
修飾詞:維度的一個或某些值,比如維度性別下,男和女就是2種修飾詞。
- 衍生指標:比如某一個促銷活動的轉(zhuǎn)化率就是衍生指標,因為需要促銷投放人數(shù)指標和促銷訂單數(shù)指標進行計算得出。
7. 標簽
標簽是人為設(shè)定的、根據(jù)業(yè)務(wù)場景需求,對目標對象運用一定的算法得到的高度精煉的特征標識??梢姌撕炇墙?jīng)過人為再加工后的結(jié)果,如網(wǎng)紅、白富美、蘿莉。對于有歧義的標簽,我們內(nèi)部可進行標簽區(qū)分,比如:蘋果,我們可以定義蘋果指的是水果,蘋果手機才指的是手機。
8. 自然鍵
由現(xiàn)實中已經(jīng)存在的屬性組成的鍵,它在業(yè)務(wù)概念中是唯一的,并具有一定的業(yè)務(wù)含義,比如商品ID,員工ID。
以數(shù)倉角度看,來自于業(yè)務(wù)系統(tǒng)的標識符就是自然鍵,比如業(yè)務(wù)庫中員工的編號。
9. 持久鍵
保持永久性不會發(fā)生變化。有時也被叫做超自然持久鍵。比如身份證號屬于持久鍵。
自然鍵和持久鍵區(qū)別:舉個例子就明白了,比如說公司員工離職之后又重新入職,他的自然鍵也就是員工編號發(fā)生了變化,但是他的持久鍵身份證號是不變的。
10. 代理鍵
就是不具有業(yè)務(wù)含義的鍵。代理鍵有許多其他的稱呼:無意義鍵、整數(shù)鍵、非自然鍵、人工鍵、合成鍵等。
代理鍵就是簡單的以按照順序序列生產(chǎn)的整數(shù)表示。產(chǎn)品行的第1行代理鍵為1,則下一行的代理鍵為2,如此進行。代理鍵的作用僅僅是連接維度表和事實表。
11. 退化維度
退化維度,就是那些看起來像是事實表的一個維度關(guān)鍵字,但實際上并沒有對應(yīng)的維度表,就是維度屬性存儲到事實表中,這種存儲到事實表中的維度列被稱為退化維度。與其他存儲在維表中的維度一樣,退化維度也可以用來進行事實表的過濾查詢、實現(xiàn)聚合操作等。
那么究竟怎么定義退化維度呢?比如說訂單id,這種量級很大的維度,沒必要用一張維度表來進行存儲,而我們進行數(shù)據(jù)查詢或者數(shù)據(jù)過濾的時候又非常需要,所以這種就冗余在事實表里面,這種就叫退化維度,citycode這種我們也會冗余在事實表里面,但是它有對應(yīng)的維度表,所以它不是退化維度。
12. 緩慢變化維
維度建模的數(shù)據(jù)倉庫中,有一個概念叫Slowly Changing Dimensions,中文一般翻譯成“緩慢變化維”,經(jīng)常被簡寫為SCD。緩慢變化維的提出是因為在現(xiàn)實世界中,維度的屬性并不是靜態(tài)的,它會隨著時間的流逝發(fā)生緩慢的變化。這種隨時間發(fā)生變化的維度我們一般稱之為緩慢變化維,并且把處理維度表的歷史變化信息的問題稱為處理緩慢變化維的問題,有時也簡稱為處理SCD的問題。
處理緩慢變化維的方法通常分為三種方式:
- 第一種方式是直接覆蓋原值。這樣處理,最容易實現(xiàn),但是沒有保留歷史數(shù)據(jù),無法分析歷史變化信息。第一種方式通常簡稱為“TYPE 1”。
- 第二種方式是添加維度行。這樣處理,需要代理鍵的支持。實現(xiàn)方式是當(dāng)有維度屬性發(fā)生變化時,生成一條新的維度記錄,主鍵是新分配的代理鍵,通過自然鍵可以和原維度記錄保持關(guān)聯(lián)。第二種方式通常簡稱為“TYPE 2”。
- 第三種方式是添加屬性列。這種處理的實現(xiàn)方式是對于需要分析歷史信息的屬性添加一列,來記錄該屬性變化前的值,而本屬性字段使用TYPE 1來直接覆蓋。這種方式的優(yōu)點是可以同時分析當(dāng)前及前一次變化的屬性值,缺點是只保留了最后一次變化信息。第三種方式通常簡稱為“TYPE 3”。
在實際建模中,我們可以聯(lián)合使用三種方式,也可以對一個維度表中的不同屬性使用不同的方式,這些,都需要根據(jù)實際情況來決定,但目的都是一樣的,就是能夠支持方便的分析歷史變化情況。
13. 微型維度
維度建模中,有一種維度叫minidimension,中文一般翻譯成“微型維度”。微型維度的提出主要是為了解決快變超大維度。
以客戶維度舉例來說,如果維度表中有數(shù)百萬行記錄或者還要多,而且這些記錄中的字段又經(jīng)常變化,這樣的維度表一般稱之為快變超大維度。對于快變超大維度,設(shè)計人員一般不會使用TYPE 2的緩慢變化維處理方法,因為大家都不愿意向本來就有幾百萬行的維度表中添加更多的行。
這時,有一項技術(shù)可以解決這個問題。解決的方法是,將分析頻率比較高或者變化頻率比較大的字段提取出來,建立一個單獨的維度表。這個單獨的維度表就是微型維度表。
微型維度表有自己的關(guān)鍵字,這個關(guān)鍵字和原客戶維度表的關(guān)鍵字一起進入事實表。有時為了分析的方便,可以把微型維度的關(guān)鍵字的最新值作為外關(guān)鍵字進入客戶維度表。這時一定要注意,這個外關(guān)鍵字必須做TYPE 1型處理。
14. 下鉆
這是在數(shù)據(jù)分析中常見的概念,下鉆可以理解成增加維的層次,從而可以由粗粒度到細粒度來觀察數(shù)據(jù),比如對產(chǎn)品銷售情況分析時,可以沿著時間維從年到月到日更細粒度的觀察數(shù)據(jù)。從年的維度可以下鉆到月的維度、日的維度等。
15. 上卷
知道了下鉆,上卷就容易理解了,它倆是相逆的操作,所以上卷可以理解為刪掉維的某些層,由細粒度到粗粒度觀察數(shù)據(jù)的操作或沿著維的層次向上聚合匯總數(shù)據(jù)。
16. 數(shù)據(jù)集市
數(shù)據(jù)集市可以理解為是一種"小型數(shù)據(jù)倉庫",它只包含單個主題,且關(guān)注范圍也非全局。數(shù)據(jù)集市可以分為兩種:
- 一種是獨立數(shù)據(jù)集市,這類數(shù)據(jù)集市有自己的源數(shù)據(jù)庫和ETL架構(gòu);
另一種是非獨立數(shù)據(jù)集市,這種數(shù)據(jù)集市沒有自己的源系統(tǒng),它的數(shù)據(jù)來自數(shù)據(jù)倉庫。當(dāng)用戶或者應(yīng)用程序不需要/不必要/不允許用到整個數(shù)據(jù)倉庫的數(shù)據(jù)時,非獨立數(shù)據(jù)集市就可以簡單為用戶提供一個數(shù)據(jù)倉庫的子集。
02數(shù)倉概念之間的關(guān)系
1. 實體表,事實表,維度表之間的關(guān)系
在Kimball維度建模中有維度與事實,在Inmon范式建模中有實體與關(guān)系,如果我們分開兩種建模方式看這些概念比較容易理解。但是目前也出現(xiàn)了不少混合建模方式,兩種建模方式結(jié)合起來看,這些概念是不是容易記憶混亂,尤其事實表和實體表,它們之間到底有怎樣區(qū)別與聯(lián)系,先看下它們各自概念:
- 維度表:維度表可以看成是用戶用來分析一個事實的窗口,它里面的數(shù)據(jù)應(yīng)該是對事實的各個方面描述,比如時間維度表,地域維度表,維度表是事實表的一個分析角度。
- 事實表:事實表其實就是通過各種維度和一些指標值的組合來確定一個事實的,比如通過時間維度,地域組織維度,指標值可以去確定在某時某地的一些指標值怎么樣的事實。事實表的每一條數(shù)據(jù)都是幾條維度表的數(shù)據(jù)和指標值交匯而得到的。
- 實體表:實體表就是一個實際對象的表,實體表放的數(shù)據(jù)一定是一條條客觀存在的事物數(shù)據(jù),比如說各種商品,它就是客觀存在的,所以可以將其設(shè)計一個實體表。實時表只描述各個事物,并不存在具體的事實,所以也有人稱實體表是無事實的事實表。
舉個例子:比如說手機商場中有蘋果手機,華為手機等各品牌各型號的手機,這些數(shù)據(jù)可以組成一個手機實體表,但是表中沒有可度量的數(shù)據(jù)。某天蘋果手機賣了15臺,華為手機賣了20臺,這些手機銷售數(shù)據(jù)屬于事實,組成一個事實表。這樣就可以使用日期維度表和地域維度表對這個事實表進行各種維度分析。
2. 指標與標簽的區(qū)別
- 概念不同
指標是用來定義、評價和描述特定事物的一種標準或方式。比如:新增用戶數(shù)、累計用戶數(shù)、用戶活躍率等是衡量用戶發(fā)展情況的指標;
標簽是人為設(shè)定的、根據(jù)業(yè)務(wù)場景需求,對目標對象運用一定的算法得到的高度精煉的特征標識。可見標簽是經(jīng)過人為再加工后的結(jié)果,如網(wǎng)紅、白富美、蘿莉。
- 構(gòu)成不同
指標名稱是對事物質(zhì)與量兩方面特點的命名;指標取值是指標在具體時間、地域、條件下的數(shù)量表現(xiàn),如人的體重,指標名稱是體重,指標的取值就是120斤;
標簽名稱通常都是形容詞或形容詞+名詞的結(jié)構(gòu),標簽一般是不可量化的,通常是孤立的,除了基礎(chǔ)類標簽,通過一定算法加工出來的標簽一般都沒有單位和量綱。如將超過200斤的稱為大胖子。
- 分類不同
對指標的分類:
按照指標計算邏輯,可以將指標分為原子指標、派生指標、衍生指標三種類型;
按照對事件描述內(nèi)容的不同,分為過程性指標和結(jié)果性指標;
對標簽的分類:
按照標簽的變化性分為靜態(tài)標簽和動態(tài)標簽;
按照標簽的指代和評估指標的不同,可分為定性標簽和定量標簽;
指標最擅長的應(yīng)用是監(jiān)測、分析、評價和建模。標簽最擅長的應(yīng)用是標注、刻畫、分類和特征提取。
特別需要指出的是,由于對結(jié)果的標注也是一種標簽,所以在自然語言處理和機器學(xué)習(xí)相關(guān)的算法應(yīng)用場景下,標簽對于監(jiān)督式學(xué)習(xí)有重要價值,只是單純的指標難以做到的。而指標在任務(wù)分配、績效管理等領(lǐng)域的作用,也是標簽無法做到的。
3. 維度和指標區(qū)別與聯(lián)系
維度就是數(shù)據(jù)的觀察角度,即從哪個角度去分析問題,看待問題。
指標就是從維度的基礎(chǔ)上去衡算這個結(jié)果的值。
維度一般是一個離散的值,比如時間維度上每一個獨立的日期或地域,因此統(tǒng)計時,可以把維度相同記錄的聚合在一起,應(yīng)用聚合函數(shù)做累加、均值、最大值、最小值等聚合計算。
指標就是被聚合的通計算,即聚合運算的結(jié)果,一般是一個連續(xù)的值。
4. 自然鍵與代理鍵在數(shù)倉的使用區(qū)別
數(shù)倉工具箱中說維度表的唯一主鍵應(yīng)該是代理鍵而不應(yīng)該是自然鍵。有時建模人員不愿意放棄使用自然鍵,因為他們希望與操作型代碼查詢事實表,而不希望與維度表做連接操作。然而,應(yīng)該避免使用包含業(yè)務(wù)含義的多維鍵,因為不管我們做出任何假設(shè)最終都可能變得無效,因為我們控制不了業(yè)務(wù)庫的變動。
所以數(shù)據(jù)倉庫中維度表與事實表的每個連接應(yīng)該基于無實際含義的整數(shù)代理鍵。避免使用自然鍵作為維度表的主鍵。
5. 數(shù)據(jù)集市與數(shù)據(jù)倉庫的區(qū)別與聯(lián)系
數(shù)據(jù)集市就是企業(yè)級數(shù)據(jù)倉庫的一個子集,它主要面向部門級業(yè)務(wù),并且只面向某個特定的主題。為了解決靈活性與性能之間的矛盾,數(shù)據(jù)集市就是數(shù)據(jù)倉庫體系結(jié)構(gòu)中增加的一種小型的部門或工作組級別的數(shù)據(jù)倉庫。數(shù)據(jù)集市存儲為特定用戶預(yù)先計算好的數(shù)據(jù),從而滿足用戶對性能的需求。數(shù)據(jù)集市可以在一定程度上緩解訪問數(shù)據(jù)倉庫的瓶頸。