角色維度扮演
- 單個(gè)物理維度可以被事實(shí)表多次引用, 每個(gè)引用連接邏輯上存在差異的角色維度。 例如, 事實(shí)表可以有多個(gè)日期, 每個(gè)日期通過外鍵引用不同的日期維度, 原則上每個(gè)外鍵表示不同的日期維度視圖, 這樣引用具有不同的含義。 這些不同的維度視圖具有唯一的代理鍵列名, 被稱為角色, 相關(guān)維度被稱為角色扮演維度。
- 當(dāng)一個(gè)事實(shí)表多次引用一個(gè)維度表時(shí)會(huì)用到角色扮演維度。 例如, 一個(gè)銷售訂單有一個(gè)是訂單日期, 還有一個(gè)請(qǐng)求交付日期, 這時(shí)就需要引用日期維度表兩次。
- 我們期望在每個(gè)事實(shí)表中設(shè)置日期維度, 因?yàn)榭偸窍M凑諘r(shí)間來分析業(yè)務(wù)情況。 在事務(wù)型事實(shí)表中, 主要的日期列是事務(wù)日期, 例如, 訂單日期。 有時(shí)會(huì)發(fā)現(xiàn)其他
日期也可能與每個(gè)事實(shí)關(guān)聯(lián), 例如, 訂單事務(wù)的請(qǐng)求交付日期。 每個(gè)日期應(yīng)該成為事實(shí)表的外鍵。 - 兩類角色扮演維度的實(shí)現(xiàn), 分別是表別名和數(shù)據(jù)庫(kù)視圖。這兩種實(shí)現(xiàn)都使用了Hive支持的功能。 表別名是在SQL語句里引用維度表多次, 每次引用都賦予維度表一個(gè)別名。 而數(shù)據(jù)庫(kù)視圖, 則是按照事實(shí)表需要引用維度表的次數(shù), 建立相同數(shù)量的視圖。