事實表維度表設計的有關問題

2021-07-12 00:49:56 字數 1535 閱讀 9579

原oltp業務系統資料為

企業銷售記錄表

企業id 銷售額 銷售時間 銷售商品編碼

4322 243 2009.6.5 3243432

4322 53 2009.5.5 324352432

4352 3243 2009.1.5 32436432

4377 3233 2005.5.5 324362432

4321 233 2007.1.5 324336432

4306 24 2008.5.5 324362432

銷售商品編碼表

種類大類 銷售商品編碼

02 3243432

04 3323432

24 3235435

24 3654597

52 3243432

如果建立設計事實表字段 維度表字段 以及pk fk 關聯

實現1 以時間維度 年 季度 月 層次鑽取

2 以商品編碼維度 實現 大類 商品編碼 鑽取

最好以為上例實際為準

------解決方案--------------------

時間維度我們通常使用7列的結構:

year_name year_code month_name month_code day_name day_code date_key

2009 2009 09 2009-09 17 2009-09-17 1

name是方便前端的展示,code是方便後台查詢

至於商品,直接就是 :

type_id product_id product_key

這樣,原來的表就成了這樣了:

企業id 銷售額 時間key 商品key

然後在universe裡,檢測外來鍵的時候,會自動的檢測1與n的關係

------解決方案--------------------

1、時間維度:需要新建時間維度表,按照年、季度、月、日的層次就好了

2、商品維度:使用銷售商品編碼表,建立出需要的商品大類、商品編碼就好了(一般用的是商品名稱而不是編碼)

3、事實表: 企業銷售記錄表 中的銷售時間與時間維度關聯,銷售商品編碼與商品維度關聯就行了 

------解決方案--------------------

小資料量可以這麼做做,大資料量估計查詢起不來 

------解決方案--------------------

仔細看:

其實你的「企業銷售記錄表」(暫稱為a表)本身就可以做為一張事實表。

而「銷售商品編碼表」(暫稱為b表)可以做為其中一張維表。

再設計一張時間維表(暫稱為c表):

日期 所屬年 所屬季度 所屬月

2009.6.5 2009 2 6

...a表中,可以將id、日期及商品編碼作為組合pk,其中的日期fk於c表的「日期」字段,商品編碼fk於b表的「商品編碼」字段。

b表中,商品編碼作為pk

c表中,日期作為pk

這是乙個典型的二角星型模型,最後關聯生成的總事實表的字段就應該包括:

企業id、所屬年、所屬季度、所屬月、商品大類,商品名稱(假設通過商品編碼維表翻譯)、銷售額

維度表與事實表

維度表示你要對資料進行分析時所用的乙個量,比如你要分析產品銷售情況,你可以選擇按類別來進行分析,或按區域來分析.這樣的按.分析就構成乙個維度。前面的示例就可以有兩個維度 型別和區域。另外每個維度還可以有子維度 稱為屬性 例如類別可以有子型別,產品名等屬性。下面是兩個常見的維度表結構 產品維度表 pr...

事實表和維度表

維度表示你要對資料進行分析時所用的乙個量,比如你要分析產品銷售情況,你可以選擇按類別來進行分析,或按區域來分析.這樣的按.分析就構成乙個維度。前面的示例就可以有兩個維度 型別和區域。另外每個維度還可以有子維度 稱為屬性 例如類別可以有子型別,產品名等屬性。下面是兩個常見的維度表結構 產品維度表 pr...

維度表和事實表

維度表 一般是對事實的描述資訊。每一張維表對應現實世界中的乙個物件或者概念。例如 使用者 商品 日期 地區等。維表的特徵 事實表中的每行資料代表乙個業務事件 下單 支付 退款 評價等 事實 這個術語表示的是業務事件的度量值 可統計次數 個數 金額等 例如,訂單事件中的下單金額。每乙個事實表的行包括 ...