數(shù)倉避坑:想清楚維度

4 評論 9701 瀏覽 14 收藏 13 分鐘

編輯導語:數(shù)倉的建設有助于企業(yè)進行更好地決策,而對數(shù)倉維度的理解可以讓我們更清楚地了解事項如何推進。那么,我們要如何理解數(shù)倉模型中的“維度”?維度,一般指觀察事物的角度。本篇文章里,作者對數(shù)倉中的“維度”進行了解讀,一起來看一下。

數(shù)倉系列的文章,寫到了第三篇,終于開始聊維度了。

維度,這個詞非常常見,但也抽象。在數(shù)倉、數(shù)分場景里,維度到底是什么?來看看這篇吧。

一、維度是什么

不懂就問,維度是什么?我們學習的自然反應,自然是去查閱專業(yè)資料。

1)阿里dataphin產(chǎn)品簡介——基本概念是這樣介紹維度:人們觀察事物的角度,是指一種視角,是確定事物的多方位、多角度、多層次的條件和概念。

2)華為DGC產(chǎn)品介紹——基本概念如此介紹維度:維度是用于觀察和分析業(yè)務數(shù)據(jù)的視角,支撐對數(shù)據(jù)匯聚、鉆取、切片分析,用于SQL中的Group by條件。多數(shù)維度具有層級結構,如:地理維度、時間維度。

3)再看看《數(shù)據(jù)倉庫工具箱》怎么說的。

維度能提供圍繞某一業(yè)務過程所涉及的 “誰、什么、何處、何時、為什么、如何” 等背景。維度表包含BI應用所需要的用于過濾及分類事實的描述性屬性。

牢牢掌握事實表的粒度,就能夠將所有可能存在的維度區(qū)分開。當與給定事實表進行關聯(lián)時,任何情況下都應該使維度保持單一值。

4)再看《阿里巴巴大數(shù)據(jù)之路》怎么說的。

維度是維度建模的基礎和靈魂。在維度建模中,將度量稱為 “事實” 將環(huán)境描述為 “維度” ,維度是用于分析事實所需要的多樣環(huán)境。

例如,在分析交易過程時,可以通過買家、賣家、商品和時間等維度描述交易發(fā)生的環(huán)境。

維度所包含的表示維度的列,稱為維度屬性。

維度屬性是查詢約束條件、分組和報表標簽生成的基本來源,是數(shù)據(jù)易用性的關鍵。維度的作用一般是查詢約束、分類匯總以及排序。

不知道你第一次看到這些解釋作何感想,我的真實的反應是:對方好好地給我講人話,為什么我聽不懂。

說實在的,這些解釋,非常專業(yè),也很硬核,但理解起來是有點困難的,沒怎么接觸過數(shù)據(jù)的伙伴估計有點懵。

二、維度怎么來的

維度,到底是什么呢?為什么它叫維度呢?

學習新知識的時候,并不只要看權威的書,任何能給你啟發(fā)、能幫助你理解的書,都是好書。

一本書看不懂,多換幾本看看,要是看完還不懂,那就嘗試回歸本質(zhì)吧。

讓我們先忘掉維度模型,忘掉數(shù)據(jù),忘掉維度。

來,一起玩?zhèn)€游戲快問快答游戲:在30秒內(nèi)說出盡可能多的筷子、勺子的相同點和不同點。

看到這個問題,你會如何描述、對比它們呢?

思考過后,我給你加個條件。問題變成:筷子和勺子在使用方式上的相同點和不同點是什么?

看到新問題,你內(nèi)心是不是有點方向了,覺得更容易回答了?

這其實是《大象·Thinking in UML》里面一個有意思的互動測試,當時我看到這個問題,腦子非?;靵y,一時詞窮,相同點和不同點我沒說出來多少。一方面平時觀察得少,另一方面,抽象訓練得也少。

作者說:這個問題沒有標準答案,這個問題反映你是否會從抽象的方法去看待事物。在不知不覺中,每一組相同點和不同點都來自于你的一個抽象角度。

例如,當從用途的角度去抽象時,他們的相同點是三者都是餐具,而不同點是筷子用于夾,勺子用來舀;從字面上理解,他們都來帶了“子”,還有其他的相同、不同點就不多說了,重點是這句:從不同的抽象角度可以得出非常不同的結果

作者還說,抽象角度的不同,決定了建模方向的不同。我之前講過什么是建模嗎?描述一個東西,就是在建模。

為什么給出分類后,會更容易回答。因為找到了合適的對比分析的角度,問題就會簡單很多。

什么是維度,再看看這句話:維度就是觀察事物的角度維度是抽象的對客觀事物的描述。

維度本不存在。是人類觀察事物、分析問題、分類歸納得來的,每個人都可以創(chuàng)造自己的維度。

維度一直都存在只是我們發(fā)現(xiàn)了它,用某種方式描述了它。

三、維度和粒度的關系

上一篇文章,講過粒度,那么這里就要將維度和粒度聯(lián)系起來學習。

1)維度有層級結構,不同層級對應不同的粒度。

地理維度有不同的層級:國家、省/自治州/直轄市、市、縣,時間維度也有不同的層級和粒度:年度、季度、月度、星期、天等。

正如有了要描述的事情,確定了粒度,再去找對應的維度。比如,訂單系統(tǒng),會記錄下單的時間信息,時間維度上,粒度會細到秒。學籍系統(tǒng),學生戶籍信息中,要填入地區(qū)維度的信息,粒度要細化到省市。

2)維度的組合越多,粒度越細細

客觀的世界,是多維的。描述一個客觀事物,維度(通常配合相應的度量)越多,粒度越細。

比如一個箱子,我們可以描述其長寬高,還可以描述顏色。不同描述維度組合越多,粒度越細,描述也越細致。

3)隨著事物的變化,描述的維度可以增加

一個箱子會經(jīng)歷生產(chǎn)、運輸、送貨上門等環(huán)節(jié),從產(chǎn)地送達到顧客手中。

箱子被生產(chǎn)出來后,沒有品牌、產(chǎn)地屬性,或者說屬性值為空。未經(jīng)歷運輸過程的箱子,沒有快遞公司、配送員屬性。

但是人們可以賦予它這些維度,并且填入維度值。維度是基于人類描述客觀事物的需要,被創(chuàng)造來的。

4)有的維度,沒有直接的數(shù)字度量

從客觀唯物主義的角度來說,某個實體的存在,長、寬、高這種比較客觀的維度屬性,是有確定值的。

但某些主觀的東西,也是需要被描述的。比如,人的帥氣程度。我們就簡單分兩類:很帥、一般。

這種主觀的維度,沒有絕對精確的度量值,無法直接和數(shù)字劃上等號。

但聰明的我們依然可以定性、定量地測算進而描述。比如搞投票,得分超過90為很帥,60-90為一般。

但這種方式,只能估算,沒有四海皆準的定值,不同的人群,投票結果不同。

四、兩個有意思的維度問題

上面我提到的兩本經(jīng)典書籍里,介紹了非常多維度的問題。這里我只說自己碰到的 2 個我思考很久的問題。

1)維度的角色

維度模型里,很多人不理解什么是維度角色。包括最開始的我自己。

數(shù)倉避坑-想清楚維度

淘寶的業(yè)務過程大家應該很熟悉,涉及4個關鍵步驟:買家下單、買家付款、賣家發(fā)貨、買家確認收貨。

每個過程,都會涉及一個對應的時間,即下單時間、支付時間、發(fā)貨時間、確認收貨時間。

如果只分析其中的一個業(yè)務過程,比如買家下單,那只需要一個時間字段即可。

但是分析完整四個過程時,如果還只有一個時間字段,那如何區(qū)分其具體含義呢?到底是下單還是支付時間,搞不清楚。

只有一個字段,肯定不夠。那必然要有 4 個時間字段。而且我們會給不同的命名,下單、支付、發(fā)貨、確認收貨作為時間的前綴。

這樣一來,咱們看的人是能理解各個數(shù)字的含義了。但不僅如此,還得讓計算機系統(tǒng)也理解。

所以,要弄一個 “維度角色”的字段來標識,以便計算機能理解。

數(shù)倉避坑-想清楚維度

在寫SQL腳本的時候,Left join 相同的維度表兩次,要給維度表取別名,這樣才不會報錯。

2)維度和One data 理論的關系

當我在研究華為的DAYU(現(xiàn)在叫做DGC)產(chǎn)品時,我發(fā)現(xiàn),基于指標生成的SQL,都是 left join 維度表 on 維度表的主鍵,而且是 group by 維度表的主鍵。

當時沒時間仔細研究,先抄了作業(yè)。

后續(xù)就碰到不少同事提出疑惑:為什么要如此設計?日期維度表里,還有周、月、年等字段,為什么不能支持按照這些字段進行 group by,一定只能按照維度表的主鍵的粒度進行匯總?

當我站在數(shù)倉層的時候,我無法回答,因為傳統(tǒng)數(shù)倉,把維度模型建出來就好了。但當我跳到第二層 One data 理論的時候,我仿佛了解了一些(我也不確認自己是否完全懂了)。

我的體會就是:維度表就代表著一種粒度,基于相同統(tǒng)計粒度的指標,才能聚合到同一個表中。

從 SQL 的角度來看,都按照某個維度表主鍵進行 group by 的指標,能合并到一個表里面,最終能基于維度表的主鍵,將維度表的非屬性字段也冗余到表中。

關于維度,還有很多,緩慢變化維、層次維度、雜項維度等等問題,大家可以自行看經(jīng)典的書籍或找高人求教~

五、總結

正如書籍里面所說,維度模型的靈魂,就是維度。

之前看《幕后產(chǎn)品》書中提到陸游的一句詩:汝果欲學詩,功夫在詩外。

學習維度,也是如此。知識不是孤立的,搞清楚維度,要聯(lián)合粒度、事實等模塊去理解,必要的時候,還要結合生活。

本文僅記錄自己學習維度模型、實踐過程中所踩的坑。如有錯誤,請各位指教。下一篇,將會分享維度模型中的“事實”。

 

作者:lee;公眾號:樂說樂言

本文由 @lee 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載

題圖來自?Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. datafin不是dataphin,老哥

    來自浙江 回復
    1. 老哥你的評論嚇我一跳,哈哈哈,我去確認了下,確實是【dataphin】
      https://help.aliyun.com/document_detail/109739.html

      來自廣東 回復
  2. 居然沒人評論,現(xiàn)在的產(chǎn)品經(jīng)理都只是功能產(chǎn)品經(jīng)理嗎?我來頂一個。

    來自四川 回復
    1. 感謝支持~

      來自廣東 回復