2012-07-07 60 views
0

我想使用ssis 2008.創建一個地理維度。我有3個表格源。加入三個沒有匹配列的表

這裏是解釋

Table 1 = Country: country code and country name 
Table 2 = Post code: post code and city name 
Table 3 = Territory : Territory code and Territory name 

下面是數據的外觀

[Table 1= Country] 

     code name 
    ------------------ 
     US | United states 
     CA | Canada 

[Table 2= post code] 

     Code city 
    --------------- 
     1000 | Paris 
     2000 | Niece 

[Table 3= Territory] 

     Code name 
     ---------------- 
     N | North 
     S | south 

正如你可以看到有沒有一個共同的專欄中,我想組在同一地理維度這3個表。

那麼,我該怎麼做呢?

此外,使用此地理模糊將在另一維度例如客戶維度。我們想知道客戶的收入根據他的地理位置或某些城市的頂級銷售人員。

在客戶和銷售人員表中,您可以找到這3個外鍵。

+0

您是否知道屬於特定城市或一個國家所有城市的郵政編碼?你如何期望一臺機器能夠做到這一點*沒有這些中間知識? (即外鍵等)。如果缺少數據被捕獲,計算機不能*填補空白*恕我直言 – PhD 2012-07-07 17:32:23

+0

有一些郵政編碼屬於同一城市。正如我解釋的那些3表可以以某種方式鏈接在客戶表或銷售行表... – Biax 2012-07-07 17:44:14

回答

0

不需要需要一個由所有三個表共享的「公共列」。

需要表中每個之間的「列列」。你還有什麼要連結他們?

問:有沒有將「國家」鏈接到「城市」的列?你應該在「城市」有一個「國家代碼」欄。

問:有什麼辦法可以「土」與要麼「郵政編碼」或「國家」鏈接?如果「是」:問題解決。請列出字段。如果「否」...那麼你需要改變你的模式。

+0

不,國家對城市或國家沒有連接到領土的欄目。如何,他們都在客戶表或銷售人員表中連接了一些種類。例如在客戶表中,有姓名,城市,國家,地區 – Biax 2012-07-07 17:41:42

+0

我認爲,如果沒有共同的方法就是爲每個維度的客戶和銷售人員創建自己的字段(國家,城市......),那麼你們告訴不可能加入的最佳答案。 您對此解決方案有何看法? – Biax 2012-07-07 17:46:57

+0

國家代碼(例如「US」)和/或城市代碼(例如「1000」) - 是。你顯然不能鏈接表,除非你有東西要鏈接:) – paulsm4 2012-07-08 03:29:38

0

根據您對paulsm4的評論,您希望使用那些持有鏈接信息的表加入上述3個表中的每個表。

在另一方面,如果你真的想加入只是那些三個表

SELECT * FROM國家 全外連接[郵編] 在「A」 =在「A」 完全外部聯接區域 'b'='b'

+0

我試過了,但它給了我第三張表的重複行,它沒有顯示任何東西。 – Biax 2012-07-07 18:01:14

0
create table dim.geography (geoID int,citycode int, countrycode char(2),territorycode char(1)) 

insert into dim.geography (select city as citycode,country as countrycode, territory as territorycode from Customer union select city, country,territory from salesperson) 

假設客戶和銷售人員表中包含代碼而不是國家,地區和國家的值。

上面的代碼將爲您想要的地理位置建立一個維度。當然,如果您在客戶/銷售人員表中添加任何額外的唯一城市,國家和地區代碼,您需要將其添加到維度。這只是一個初始負載。您可能還需要修改代碼以說明三個限定符中的任何一個的空值。