大數據必備知識:數據的分類方式
上一篇文章介紹了數據驅動增長的三個要素,其中數據是最關鍵的要素,是一切數據工作都的根本。針對數據這個要素,除了之前專門介紹了數據的本質和價值外,本文再來探討一下數據分類。
數據分類在收集、處理和應用數據過程中非常重要。數據的分類方式很多,每種方式都有特別的作用。數據工作中不同角色往往需要理解和掌握不同的分類方式,以便更好地組織、管理、分析和應用數據。比如,數據平台架構師必須理解每個組件適合處理什麼類型的數據,數據倉庫工程師需要根據數據類型採取適合的數據清洗方法,數據分析人員必須知道數據的組織結構才能找到想要的數據。
下面將逐個介紹各種常見分類方式,並簡單介紹每種分類的使用場景,以及對每個角色的重要程度。
(1)從欄位類型上:文本類(string、char、text等)、數值類(int、float、number等)、時間類(data、timestamp等)
- 文本類數據常用於描述性欄位,如姓名、地址、交易摘要等。這類數據不是量化值,不能直接用於四則運算。在使用時,可先對該欄位進行標準化處理(比如地址標準化)再進行字元匹配,也可直接模糊匹配。
- 數值類數據用於描述量化屬性,或用於編碼。如交易金額、額度、商品數量、積分數、客戶評分等都屬於量化屬性,可直接用於四則運算,是日常計算指標的核心欄位。郵編、身份證號碼、卡號之類的則屬於編碼,是對多個枚舉值進行有規則編碼,可進行四則運算,但無實質業務含義,不少編碼都作為維度存在。
- 時間類數據僅用於描述事件發生的時間,時間是一個非常重要的維度,在業務統計或分析中非常重要。
這種分類方式是最基本的,和很多場景有關。其一在系統設計時,需要確定每個欄位的類型,以便設計資料庫結構。其二,在數據清洗時,文本類數據往往很難清洗,而且很多文本類數據也沒有清洗的必要,比如備註或客戶評論。數值類和時間類數據是清洗的重點,這類欄位在業務上一般都有明確的取值範圍,比如年齡必須大於0。對於不合法的取值,通常用默認值填充。其三,在建立維度模型時,數值類中的編碼型欄位和時間類欄位通常作為維度,數值類中的量化屬性作為度量。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
(2)從數據結構上:結構化數據、半結構化數據、非結構化數據
- 結構化數據通常是指用關係資料庫方式記錄的數據,數據按表和欄位進行存儲,欄位之間相互獨立。
- 半結構化數據是指以自描述的文本方式記錄的數據,由於自描述數據無需滿足關係資料庫上那種非常嚴格的結構和關係,在使用過程中非常方便。很多網站和應用訪問日誌都採用這種格式,網頁本身也是這種格式。
- 非結構化數據通常是指語音、圖片、視頻等格式的數據。這類數據一般按照特定應用格式進行編碼,數據量非常大,且不能簡單地轉換成結構化數據。
這種分類方式近幾年特別重要,相關的場景包括:其一,結構化數據是傳統數據的主體,而半結構化和非結構化數據是大數據的主體。後者的增長速度比前者快很多,大數據的量這麼大,主要是因為半結構化和非結構化數據的增長速度太快。其二,在數據平台設計時,結構化數據用傳統的關係資料庫便可高效處理,而半結構化和非結構化數據必須用Hadoop等大數據平台。其三,在數據分析和挖掘時,不少工具都要求輸入結構化數據,因此必須把半結構化數據先轉換成結構化數據。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
(3)從描述事物的角度:狀態類數據、事件類數據、混合類數據
- 用數據來描述客觀世界,一般可以從兩個方面出發。第一方面是描述客觀世界的實體,也即一個個對象,比如人、桌子、賬戶等等。對於這些對象,各有各的特徵,不同種類的對象擁有不同的特徵,比如人的特徵包括姓名、性別和年齡,桌子的特徵包括顏色和材質;對於同一種對象的不同個體,其特徵值的不同,比如張三男20歲,李四女24歲。有些特徵穩定不變,而另一些則會不斷發生變化,比如性別一般不變,但賬戶金額、人的位置則隨時可能變化。因此,可以使用一組特徵數據來描述每個對象,這些數據可以隨時間發生變化(數據的變化一方面依賴於對象的變化,另一方面依賴於變化反映到數據上的時間差),每個時點的數據反映這個時點對象所處的狀態,因此稱之為狀態類數據。
- 第二方面是描述客觀世界中對象之間的關係,它們是怎麼互動的,怎麼發生反應的。我們把這一次次互動或反應記錄下來,這類數據稱之為事件類數據。比如客戶到商店買了件衣服,這裡出現三個對象,分別是客戶、商店、衣服,三個對象之間發生了一次交易關係。
- 混合類數據理論上也屬於事件類數據範疇,兩者的差別在於,混合類數據所描述的事件發生過程持續較長,記錄數據時該事件還沒有結束,還將發生變化。比如訂單,從訂單生成到結案整個過程需要持續一段時間,首次記錄訂單數據是在訂單生產的時候,訂單狀態、訂單金額後續還可能多次變化。
這種分類方式在數據倉庫建模是特別重要。數據倉庫需要保存各種歷史數據,不同類型的歷史數據保存方式差別很大。狀態類數據保存歷史的方式一般有兩種:存儲快照或者SCD方式。事件類數據一旦發生就已經是歷史了,只需直接存儲或者按時間分區存儲。混合類數據保存歷史比較複雜,可以把變化的欄位分離出來,按狀態類數據保存,剩下不變的則按事件類數據保存,使用時再把兩者合併。另一個相關場景就客戶畫像,客戶畫像通常用狀態類數據,對於和客戶相關的事件類數據和混合類數據,也會轉換成和狀態類數據相同的形態。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
(4)從數據處理的角度:原始數據、衍生數據
- 原始數據是指來自上游系統的,沒有做過任何加工的數據。雖然會從原始數據中產生大量衍生數據,但還是會保留一份未作任何修改的原始數據,一旦衍生數據發生問題,可以隨時從原始數據重新計算。
- 衍生數據是指通過對原始數據進行加工處理後產生的數據。衍生數據包括各種數據集市、匯總層、寬表、數據分析和挖掘結果等等。從衍生目的上,可以簡單分為兩種情況,一種是為提高數據交付效率,數據集市、匯總層、寬表都屬於這種情況。另一種是為解決業務問題,數據分析和挖掘結果就屬於這種。
這種分類方式主要用在管理數據上,對原始數據的管理和衍生數據的管理有一些差別。原始數據通常只要保留一份,衍生數據卻不同,管理形式比較靈活,只要有利於提高數據分析和挖掘效率,產生更大的數據價值,任何形式都可以嘗試。比如為每個業務條線定製個性化數據集市,提高每個業務條線的數據分析效率,雖然不同集市存在大量冗餘的數據,但只要能大幅提高分析效率,用空間換時間也未嘗不可。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
(5)從數據粒度上:明細數據、匯總數據
- 通常從業務系統獲取的原始數據,是粒度比較小的,包括大量業務細節。比如,客戶表中包含每個客戶的性別、年齡、姓名等數據,交易表中包含每筆交易的時間、地點、金額等數據。這種數據我們稱之為明細數據。明細數據雖然包括了最為豐富的業務細節,但在分析和挖掘時,往往需要進行大量的計算,效率比較低。
- 為了提高數據分析效率,需要對數據進行預加工,通常按時間維度、地區維度、產品維度等常用維度進行匯總。分析數據時,優先使用匯總數據,如果匯總數據滿足不了需求則使用明細數據,以此提高數據使用效率。
這種分類方式的相關場景有兩種,一種是在數據倉庫設計時,如何對數據進行匯總,按什麼方式進行匯總,才能達到使用效率和匯總成本的平衡。另一種是數據分析人員在分析數據時,在明細數據、各種匯總數據之間選擇合適的數據,以提高分析效率。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
(6)從更新方式上:批量數據、實時數據
- 源系統提供數據時,不同的源系統有不同的提供方式,主要可以分為兩種方式。 一種是批量方式 ,這種方式每隔一段時間提供一次,把該時段內所有變化的都提供過來。批量方式時效較低,大部分傳統系統都採用T+1方式,業務用戶最快只能分析到前一天的數據,看前一天的報表。
- 另一種方式是實時方式,即每當數據發生變化或產生新數據,就會立刻提供過來。這種方式時效快,能有效滿足時效要求高的業務,比如場景營銷。但該方式對技術要求更高,必須保證系統足夠穩定,一旦出現數據錯誤,容易造成較嚴重的業務影響。
這種分類方式也非常重要,目前有越來越多系統採取該方式提供數據。這對數據處理、數據分析和數據應用產生了巨大的影響。一方面能為業務提供近乎實時的數據和報表支持,實現高時效的業務場景。另一方面也極大地增加了數據架構、數據分析和應用的技術難度。
該分類對每種角色的重要程度:
- 數據平台架構師:
- 數據倉庫工程師:
- 數據分析和挖掘人員:
推薦閱讀: