熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

深入探討數據倉庫建模與ETL的實踐技巧[3]

2013-11-13 12:37:55  來源: SQL語言 

  這裡我們首先要確定維度的層次(Hierarchy)和級別(Level)(圖四picbmp)如圖所示我們在時間維度上按照季度形成了一個層次其中季度成為了這個層次的個級別;同理當我們建立產品維度時我們可以將產品大類產品子類產品劃為一個層次其中包含產品大類產品子類產品三個級別

  那麼我們分析中所用到的這些維度在數據倉庫中的存在形式是怎樣的呢?

  我們可以將個級別設置成一張數據表中的個字段比如時間維度;我們也可以使用三張表分別保存產品大類產品子類產品三部分數據比如產品維度(圖五picbmp)

  另外值得一提的是我們在建立維度表時要充分使用代理鍵代理鍵是數值型的ID號碼(例如圖六中每張表的第一個字段)它唯一標識了每一維度成員更重要的是在聚合時數值型字段的匹配和比較JOIN效率高便於聚合同時代理鍵對緩慢變化維度有著重要的意義在原數據主鍵相同的情況下它起到了對新數據與歷史數據的標識作用

  在此我們不妨談一談維度表隨時間變化的問題這是我們經常會遇到的情況我們稱其為緩慢變化維度

  比如我們增加了新的產品或者產品的ID號碼修改了或者產品增加了一個新的屬性此時維度表就會被修改或者增加新的記錄行這樣我們在ETL的過程中就要考慮到緩慢變化維度的處理對於緩慢變化維度有三種情況

  緩慢變化維度第一種類型

  歷史數據需要修改這種情況下我們使用UPDATE方法來修改維度表中的數據例如產品的ID號碼為後來發現ID號碼錯了需要改寫成那麼我們就在ETL處理時直接修改維度表中原來的ID號碼為

  緩慢變化維度第二種類型

  歷史數據保留新增數據也要保留這時要將原數據更新將新數據插入我們使用UPDATE / INSERT比如某一員工年在A部門年時他調到了B部門那麼在統計年的數據時就應該將該員工定位到A部門;而在統計年數據時就應該定位到B部門然後再有新的數據插入時將按照新部門(B部門)進行處理這樣我們的做法是將該維度成員列表加入標識列將歷史的數據標識為過期將目前的數據標識為當前的另一種方法是將該維度打上時間戳即將歷史數據生效的時間段作為它的一個屬性在與原始表匹配生成事實表時將按照時間段進行關聯這種方法的好處是該維度成員生效時間明確

[]  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/SQL/201311/16276.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.