作為一個資料人,是不是經常被各種名詞圍繞,是不是對其中很多概念認知模糊。有些詞雖然只有一字之差,但是它們意思完全不同,今天我們就來了解下數倉建設及資料分析時常見的一些概念含義及它們之間的關係。
本文結構如下圖所示:
一、數倉中常見概念解析
1. 實體
實體是指依附的主體,就是我們分析的一個物件,比如我們分析商品的銷售情況,如華為手機近半年的銷售量是多少,那華為手機就是一個實體;我們分析使用者的活躍度,使用者就是一個實體。當然實體也可以現實中不存在的,比如虛擬的業務物件,活動,會員等都可看做一個實體。
實體的存在是為了業務分析,作為分析的一個篩選的維度,擁有描述自己的屬性,本身具有可分析的價值。
2. 維度
維度就是看待問題的角度,分析業務資料,從什麼角度分析,就建立什麼樣的維度。所以維度就是要對資料進行分析時所用的一個量,比如你要分析產品銷售情況,你可以選擇按商品類別來進行分析,這就構成一個維度,把所有商品類別集合在一起,就構成了維度表。
3. 度量
度量是業務流程節點上的一個數值。比如銷量,價格,成本等等。
事實表中的度量可分為三類:完全可加,半可加,不可加。
-
完全可加的度量是最靈活,最有用的,比如說銷量,銷售額等,可進行任意維度彙總;
-
半可加的度量可以對某些維度彙總,但不能對所有維度彙總,差額是常見的半可加度量,它除了時間維度外,可以跨所有維度進行加法操作;
-
還有一種是完全不可加的,例如:比率。對於這類非可加度量,一種好的方法是,儘可能儲存非可加度量的完全可加分量,並在計算出最終的非可加事實前,將這些分量彙總到最終的結果集中。
4. 粒度
粒度就是業務流程中對度量的單位,比如商品是按件記錄度量,還是按批記錄度量。
在數倉建設中,我們說這是使用者粒度的事實表,那麼表中每行資料都是一個使用者,無重複使用者;例如還有銷售粒度的表,那麼表中每行都是一條銷售記錄。
選擇合適的粒度級別是資料倉儲建設好壞的重要關鍵內容,在設計資料粒度時,通常需重點考慮以下因素:
-
要接受的分析型別、可接受的資料最低粒度和能儲存的資料量;
-
粒度的層次定義越高,就越不能在該倉庫中進行更細緻的分析;
-
如果儲存資源有一定的限制,就只能採用較高的資料粒度劃分;
-
資料粒度劃分策略一定要保證:資料的粒度確實能夠滿足使用者的決策分析需要,這是資料粒度劃分策略中最重要的一個準則。
5. 口徑
口徑就是取數邏輯(如何取數的),比如要取的數是10歲以下兒童中男孩的平均身高,這就是統計的口徑。
6. 指標
指標是口徑的衡量值,也就是最後的結果。比如最近七天的訂單量,一個促銷活動的購買轉化率等。
一個指標具體到計算實施,主要有以下幾部分組成:
-
指標加工邏輯,比如count ,sum, avg
-
維度,比如按部門、地域進行指標統計,對應sql中的group by
-
業務限定/修飾詞,比如以不同的支付渠道來算對應的指標,微信支付的訂單退款率,支付寶支付的訂單退款率 。對應sql中的where。
除此之外,指標本身還可以衍生、派生出更多的指標,基於這些特點,可以將指標進行分類:
- 原子指標:基本業務事實,沒有業務限定、沒有維度。比如訂單表中的訂單量、訂單總金額都算原子指標;
業務方更關心的指標,是有實際業務含義,可以直接取資料的指標。比如店鋪近1天訂單支付金額就是一個派生指標,會被直接在產品上展示給商家看。
但是這個指標卻不能直接從數倉的統一中間層裡取數(因為沒有現成的事實欄位,數倉提供的一般都是大寬表)。需要有一個橋樑連線數倉中間層和業務方的指標需求,於是便有了派生指標
- 派生指標:維度+修飾詞+原子指標。 店鋪近1天訂單支付金額中店鋪是維度,近1天是一個時間型別的修飾詞,支付金額是一個原子指標;
維度:觀察各項指標的角度;
修飾詞:維度的一個或某些值,比如維度性別下,男和女就是2種修飾詞。
- 衍生指標:比如某一個促銷活動的轉化率就是衍生指標,因為需要促銷投放人數指標和促銷訂單數指標進行計算得出。
7. 標籤
標籤是人為設定的、根據業務場景需求,對目標物件運用一定的演算法得到的高度精煉的特徵標識。可見標籤是經過人為再加工後的結果,如網紅、白富美、蘿莉。對於有歧義的標籤,我們內部可進行標籤區分,比如:蘋果,我們可以定義蘋果指的是水果,蘋果手機才指的是手機。
8. 自然鍵
由現實中已經存在的屬性組成的鍵,它在業務概念中是唯一的,並具有一定的業務含義,比如商品ID,員工ID。
以數倉角度看,來自於業務系統的識別符號就是自然鍵,比如業務庫中員工的編號。
9. 持久鍵
保持永久性不會發生變化。有時也被叫做超自然持久鍵。比如身份證號屬於持久鍵。
自然鍵和持久鍵區別:舉個例子就明白了,比如說公司員工離職之後又重新入職,他的自然鍵也就是員工編號發生了變化,但是他的持久鍵身份證號是不變的。
10. 代理鍵
就是不具有業務含義的鍵。代理鍵有許多其他的稱呼:無意義鍵、整數鍵、非自然鍵、人工鍵、合成鍵等。
代理鍵就是簡單的以按照順序序列生產的整數表示。產品行的第1行代理鍵為1,則下一行的代理鍵為2,如此進行。代理鍵的作用僅僅是連線維度表和事實表。
11. 退化維度
退化維度,就是那些看起來像是事實表的一個維度關鍵字,但實際上並沒有對應的維度表,就是維度屬性儲存到事實表中,這種儲存到事實表中的維度列被稱為退化維度。與其他儲存在維表中的維度一樣,退化維度也可以用來進行事實表的過濾查詢、實現聚合操作等。
那麼究竟怎麼定義退化維度呢?比如說訂單id,這種量級很大的維度,沒必要用一張維度表來進行儲存,而我們進行資料查詢或者資料過濾的時候又非常需要,所以這種就冗餘在事實表裡面,這種就叫退化維度,citycode這種我們也會冗餘在事實表裡面,但是它有對應的維度表,所以它不是退化維度。
12. 下鑽
這是在資料分析中常見的概念,下鑽可以理解成增加維的層次,從而可以由粗粒度到細粒度來觀察資料,比如對產品銷售情況分析時,可以沿著時間維從年到月到日更細粒度的觀察資料。從年的維度可以下鑽到月的維度、日的維度等。
13. 上卷
知道了下鑽,上卷就容易理解了,它倆是相逆的操作,所以上卷可以理解為刪掉維的某些層,由細粒度到粗粒度觀察資料的操作或沿著維的層次向上聚合彙總資料。
二、數倉概念之間關係
1. 實體表,事實表,維度表之間的關係
在Kimball維度建模中有維度與事實,在Inmon正規化建模中有實體與關係,如果我們分開兩種建模方式看這些概念比較容易理解。但是目前也出現了不少混合建模方式,兩種建模方式結合起來看,這些概念是不是容易記憶混亂,尤其事實表和實體表,它們之間到底有怎樣區別與聯絡,先看下它們各自概念:
-
維度表:維度表可以看成是使用者用來分析一個事實的視窗,它裡面的資料應該是對事實的各個方面描述,比如時間維度表,地域維度表,維度表是事實表的一個分析角度。
-
事實表:事實表其實就是通過各種維度和一些指標值的組合來確定一個事實的,比如通過時間維度,地域組織維度,指標值可以去確定在某時某地的一些指標值怎麼樣的事實。事實表的每一條資料都是幾條維度表的資料和指標值交匯而得到的。
-
實體表:實體表就是一個實際物件的表,實體表放的資料一定是一條條客觀存在的事物資料,比如說各種商品,它就是客觀存在的,所以可以將其設計一個實體表。實時表只描述各個事物,並不存在具體的事實,所以也有人稱實體表是無事實的事實表。
舉個例子:比如說手機商場中有蘋果手機,華為手機等各品牌各型號的手機,這些資料可以組成一個手機實體表,但是表中沒有可度量的資料。某天蘋果手機賣了15臺,華為手機賣了20臺,這些手機銷售資料屬於事實,組成一個事實表。這樣就可以使用日期維度表和地域維度表對這個事實表進行各種維度分析。
2. 指標與標籤的區別
- 概念不同
指標是用來定義、評價和描述特定事物的一種標準或方式。比如:新增使用者數、累計使用者數、使用者活躍率等是衡量使用者發展情況的指標;
標籤是人為設定的、根據業務場景需求,對目標物件運用一定的演算法得到的高度精煉的特徵標識。可見標籤是經過人為再加工後的結果,如網紅、白富美、蘿莉。
- 構成不同
指標名稱是對事物質與量兩方面特點的命名;指標取值是指標在具體時間、地域、條件下的數量表現,如人的體重,指標名稱是體重,指標的取值就是120斤;
標籤名稱通常都是形容詞或形容詞+名詞的結構,標籤一般是不可量化的,通常是孤立的,除了基礎類標籤,通過一定演算法加工出來的標籤一般都沒有單位和量綱。如將超過200斤的稱為大胖子。
- 分類不同
對指標的分類:
按照指標計算邏輯,可以將指標分為原子指標、派生指標、衍生指標三種型別;
按照對事件描述內容的不同,分為過程性指標和結果性指標;
對標籤的分類:
按照標籤的變化性分為靜態標籤和動態標籤;
按照標籤的指代和評估指標的不同,可分為定性標籤和定量標籤;
指標最擅長的應用是監測、分析、評價和建模。
標籤最擅長的應用是標註、刻畫、分類和特徵提取。
特別需要指出的是,由於對結果的標註也是一種標籤,所以在自然語言處理和機器學習相關的演算法應用場景下,標籤對於監督式學習有重要價值,只是單純的指標難以做到的。而指標在任務分配、績效管理等領域的作用,也是標籤無法做到的。
3. 維度和指標區別與聯絡
維度就是資料的觀察角度,即從哪個角度去分析問題,看待問題。
指標就是從維度的基礎上去衡算這個結果的值。
維度一般是一個離散的值,比如時間維度上每一個獨立的日期或地域,因此統計時,可以把維度相同記錄的聚合在一起,應用聚合函式做累加、均值、最大值、最小值等聚合計算。
指標就是被聚合的通計算,即聚合運算的結果,一般是一個連續的值。
4. 自然鍵與代理鍵在數倉的使用區別
數倉工具箱中說維度表的唯一主鍵應該是代理鍵而不應該是自然鍵。有時建模人員不願意放棄使用自然鍵,因為他們希望與操作型程式碼查詢事實表,而不希望與維度表做連線操作。然而,應該避免使用包含業務含義的多維鍵,因為不管我們做出任何假設最終都可能變得無效,因為我們控制不了業務庫的變動。
所以資料倉儲中維度表與事實表的每個連線應該基於無實際含義的整數代理鍵。避免使用自然鍵作為維度表的主鍵。