
遞歸層次
1)維度的遞歸層級即在維度分層的一種表現(xiàn)形式,如下:
① 類目維度,細分為葉子類目、三級類目、二級類目、一級類目
② 地址類目,細分為區(qū)縣、城市、省份、國家
2)對遞歸層次的探查過程分為上鉆和下鉆。假設(shè)一個場景,統(tǒng)計類目id為001的所有商品最近一天的銷售額,步驟如下:
① 獲取父類目為001的所有類目,得到一個類目集合
② 便利集合每一個元素,如果類目為葉子類目則終止;如果非葉子類目則此id作為父類目重復(fù)第一步,知道找出所有的葉子類目
③ 將所有葉子類目與事實表關(guān)聯(lián)統(tǒng)計
以上場景是一個下鉆的過程,鉆取過程常常伴隨遞歸sql。
3)為了降低遞歸sql的使用成本,對遞歸層次進行相應(yīng)處理:
① 層次扁平化:

當按照三級類目進行統(tǒng)計時,由于001,002的三級類目為null,所以會遺漏這部分數(shù)據(jù),我們使用的方法時回填,將上級類目向下虛擬

扁平化的使用前提是鉆取前知道類目級別和類目遞歸級別是固定的
② 層次橋接表:不需要預(yù)先知道類目級別、不去要數(shù)據(jù)回填、不需要固定類目遞歸級別,但是使用復(fù)雜,成本高,實踐中并不推薦

對類目003上鉆場景:
+ 類目表限制003
+ 通過類目id與橋接表的子類目id關(guān)聯(lián)
+ 事實表中類目id與橋接表父類目id關(guān)聯(lián)
對類目001下鉆場景:
+ 類目標限制001
+ 通過類目id與橋接表的父類目id關(guān)聯(lián)
+ 事實表中類目id與橋接表子類目id關(guān)聯(lián)

多值維度
? ? ? ? 事實表一條記錄根據(jù)業(yè)務(wù)場景有時會關(guān)聯(lián)多條維度表數(shù)據(jù),如一個訂單包含多個子訂單,會關(guān)聯(lián)到多個商品信息;購房信息中的夫妻聯(lián)合買入,會關(guān)聯(lián)到多個買房人。常用處理辦法如下:
1)降低事實表的粒度:如訂單粒度降到子訂單,就能實現(xiàn)一條事實表數(shù)據(jù)對應(yīng)一個商品維表數(shù)據(jù),但有時粒度并不能降低
2)采用多字段:對于關(guān)聯(lián)維度數(shù)據(jù)不多的情況可以采用多個字段的方式,考慮到擴展性可以采用預(yù)留字段的方式

3)采用橋接表:表現(xiàn)靈活但是邏輯復(fù)雜,加工成本高

雜項維度
在事實表中可能存在多個類似的字段,如交易訂單事實表的交易類型、交易狀態(tài)、物流狀態(tài)、交易流言等字段。保存在事實表中會造成事實表占用空間過大,保存在單獨維表中會造成維度過多,所以建立一個雜項維度,統(tǒng)一存放這些字段