2011-05-09 54 views
1

爲DW創建位置維度表;我很熟悉日期/時間,但是我使用這些列的位置是:大陸,國家,地區,城市,郵政。現在的問題是如果一個記錄沒有城市或郵政,只有一個地區才結束。在DW中,所有記錄都有一個城市,但在事實表中可能有數據,因爲這些數據在調查收集時不是必需的數據點,所以如何設計此表?我是否需要首先插入行僅爲數,只有國家,只有城市,只有郵政等,而其餘的空白,然後建立像大陸到國家等關係?位置維度表

回答

2

兩種基本的方式來解決這個問題。

  1. 使用未知缺失值。因此,每個城市有一個未知郵政編碼,每個地區都有一個未知城市。這樣一來,其與region結尾的位置,具有City='unknown' , Postal='unknown'

  2. 簡單地只使用中存在的所有記錄列 - 在這種情況下下降citypostal列。

+0

使用「未知」而不是空值確實爲需要編寫運行即席查詢和/或報告的分析師節省了時間。 – Olaf 2011-05-16 21:44:19

+0

這可能是最好的選擇 – 2011-05-19 08:32:44

0

@ Darmir的解決方案是有趣的,它的大好處是,它使在一個表中的地理數據,不足之處是,你得到一個非常大的數量與「未知」記錄洲,國家,地區,城市,郵政組合 - 既可以在ETL中實時生成,也可以作爲一次性裝載(如果可以明確地完成)。

顯然這裏有一個自然的層次,所以我們想嘗試和利用它。

但或者,我想這可能是有趣,建設一批維表,而不是僅僅一個。在最糟糕的情況下,您可能會將事實表與替代鍵分別對應DimContinent,DimCountry,Dimregion,DimCity和DimPostCode。但是有些分析可能會將這些表分類在一起。考慮以下問題...

  1. 是否有任何字段(總是/通常)填寫?
  2. 是否有一組字段,如果有人填寫,那麼其他人也將是?
  3. 您能否獲得一些明確的參考數據來加強和填寫您的缺失數據?

以下(2)您可能會發現,如果國家/地區已填寫,那麼歐洲大陸已提交,否則都是未知。這自然會建議包含這兩個字段的DimCountry表。如果你可以找到一種方法來豐富你的數據(步驟3),那麼你可以生成一個DimCity表,它具有(洲/國家/地區/城市) )。

當你暴露在多維數據集,這些獨立的尺寸,你將能夠將其納入一個層次,然後可以使用您的層次結構容易出現。

我不是完全相信自己在這個解決方案中,但想到我會向前扔在情況下,它是幫助。

0

我已經在我的生活中做了一些位置維度,我現在正在管理一個具有較大位置維度的系統。我描述了我是如何在博客中製作的。 https://dimensionalmodelingblog.wordpress.com/creating-a-location-dimension-in-a-data-warehouse/

位置尺寸是棘手的,甚至拉爾夫·金博爾承認,這是一個挑戰(請參閱構建數據倉庫的第10章)。

在你的情況下,你的實際需要5個維度,每個級別及其以上級別(對於大陸一個維,國家,地區,城市,郵政,一個洲,國家,地區,城市,等等)。當你有沒有城市信息的數據,你使用區域尺寸等。

而不是做出5個單獨的表,我建議在一個表中創建所有內容並在該表上創建視圖,以便只維護一個位置維度。

你的表是這樣的 洲,國家,地區,城市,郵政,Level1Flag,Level2Flag,Level3Flag,Level4Flag,Level5Flag

你的進程標誌合適的水平,以它的價值的所有條目,而第一每個級別輸入到下一級別的值: 例如,您在美國科羅拉多州的15個城市中,每個城市均已升至級別4,並且第一個級別已升至級別3 然後,您的LocationCity視圖將顯示前4個列和過濾器在Level4Flag上,您的LocationRegion視圖顯示Level3Flag上的前3列和過濾器。

然後你有兩個最好的:一維表維護和5個角色視圖像小維度一樣操作。