閱讀本文不需要技術背景。
總體介紹
首先模擬一個數據分析場景,某企業積累了如下表格所示的銷售數據:
表格中每一行表示某個時間段內某種商品在某個地區的銷售情況。很明顯,這些數據涉及到了時間、地區、產品三個業務角度。
在對這樣的數據進行分析時,不同的角色都會基於自己所感興趣的業務角度提出問題
銷售經理關心各個地區的銷售情況,希望找出銷售增長率在平均水平之下的地區產品總監則希望了解近期內各種產品的銷量對比,以作為後期產品研發方向的參考CEO想要知道近六個月內整體銷售環比信息,用以評估是否達到公司運營目標
對於表格中的數據,可以將其轉換為另一種數據格式 - "三維空間立方體",如下圖所示:
相對於表格,以三維立方體形式呈現的數據結構更加直觀。
在這個數據立方體中,每一個坐標軸都代表一個業務角度(時間、地區、產品),坐標軸上的坐標值則表示了某個業務角度的一個確定的值(如:北京市、3月份、手機),不同坐標軸坐標值的交叉點則表示一個具體的銷售額。
實際上,此數據立方體中表示業務角度的坐標軸就是維度,類似於三維立方體的數據結構則被稱為多維數據結構(也稱數據立方體)。
再次回顧前文中銷售經理、產品總監、CEO各自提出的問題,不難發現他們各自所關注的維度分別為:地區、產品、時間
目前我們所模擬的這個數據分析場景較為特殊,因為只有三個維度,所以可以直觀的將數據想像成一個三維立方體。
實際情況中,企業進行數據分析時往往要參考更多的維度,而且提出的問題也會更加複雜,此時,已經不能將數據以經典的三維立方體結構進行呈現。
雖然無法在三維空間中呈現更多維度的數據結構,但是面對更多維度時進行數據分析的思路卻完全不變,不同的角色只需要從自身所關注的維度出發並提出問題即可,他們即不需要了解十幾甚至幾十維的數據如何存儲,也無需考慮多維數據查詢的具體實現方式。
核心概念簡介
在多維數據分析領域中,有幾個非常重要的核心概念:
數據立方體(Cube)維度(Dimension)成員(Member),又稱維度成員(Dimension Member)度量(Measure)級別(Level)
維度(Dimension)
維度就是描述數據的業務角度。在不同的數據分析場景中,會存在若干個不同的維度。
以上圖為例,存在三個維度:時間、地區、產品。在這個數據分析場景中,「哪種產品銷量最好?」這樣的問題顯然主要關注的是產品這個維度,而「哪些地區連續六個月銷售額環比增長?」則同時關注了地區和日期兩個維度。
在一個多維數結構中,維度可以被抽象理解成一個坐標軸,圖1中所示的數據分析場景由三個維度組成,每個維度各自代表了三維空間中的一個坐標軸。
相對於三維空間,具有更多維度的空間結構顯然不易於被理解,實際上,您並不需要在頭腦中想像出一個更多維度的空間場景,下文中幾個簡單的步驟將幫助您快速理解多維空間結構:
【理解一維空間結構】
一維空間是一把尺子,只有一個坐標軸,坐標軸上的一個坐標值就能確定一個點
【理解二維空間結構】
二維空間是一個平面,具有兩個坐標軸,不同坐標軸上的兩個坐標值確定一個點
【理解三維空間結構】
三維空間具有長、寬、高三個坐標軸,三個坐標軸坐標值確定一個點
【理解四維空間結構】
四維空間比三維空間多出一個坐標軸,這裡我們稱這個新的坐標軸為「第四坐標軸」,現在如果需要確定一個點,除了長、寬、高三個軸上的坐標值外,還需要第四坐標軸上的一個坐標值
【理解N維空間結構】
N(N可以是大於零的任意整數)維空間中具有N個坐標軸,需要N個不同坐標軸上的坐標值才能確定一個點
維度成員(Dimension Member)
前文介紹維度概念時,講到可將維度理解成表示某種業務角度的坐標軸,而維度成員則非常類似於維度坐標軸上的坐標值。
以時間維度為例,「一季度」、「1月份」、「2月份」這三個維度成員同屬於時間維度,它們各自表示了時間維度下一個具體的時間段。
由下圖可以看出,同一個維度下的維度成員呈現出樹狀結構,我們將沒有子級成員的成員稱為明細成員(Leaf Member,又稱明細維度成員Leaf Dimension Member),其他成員稱為非明細成員。
數據立方體(Cube)
數據立方體表示由若干個維度所描述的一個數據集合,每個維度各自表示一個可對此數據集合進行觀察和分析的業務角度。
之所以稱為「立方體」,是因為由三個維度所描述的一個數據集,能夠非常輕鬆的被想像成三維空間中的一個立方體結構。
需要注意的是,在多維數據分析體系中,一個數據立方體往往具有更多的維度,雖然更多維度形態並不像三維空間立方體那樣直觀,但維度表示某些業務角度的作用不會改變。
度量(Measure)
在一個數據立方體中,從每個維度上都選取一個確定的維度成員,這些維度成員組合所確定的一個點就是度量值。
在圖 10示例中,日期維度:1月份、地區維度:河北省、產品維度:手機確定了一個最細粒度的數據方塊,這個小數據方塊(下文稱為Data Cell)就是銷售額6688這個度量值,顯然,這表示「河北地區1月份手機產品的銷售額是6688」。
如果仔細觀察圖 10,您可能會發現並沒有一個Data Cell能夠直接表示「北京市一季度手機產品的銷售額」。由於一季度與1、2、3三個月份是父子級的關係,所以「北京市一季度手機產品的銷售額」可以通過匯總計算得到,如下圖所示:
圖 11 - 度量值匯總
一般情況下,數據立方體中並不直接存儲非明細成員所描述的度量值,而是通過對其後代成員中的全部明細成員進行匯總計算而得出。
級別(Level)
級別表示維度成員所描述業務角度的細節程度,也可理解為通過維度成員觀察數據的粒度。例如日期維度中一季度、1月這兩個成員,分別屬於季度、月份兩個不同的級別,顯而易見,季度級別的維度成員描述數據的粒度較為寬泛,月級別則較為細緻。