2012-01-20 48 views
0

我有一個事實[訂單]和客戶維度[Customers]。這兩者之間有三種關係,因爲訂單可以有三種類型的客戶。 :託運人,收貨人,billto。因此,當我嘗試通過客戶維度中的客戶ID和名稱來瀏覽數據並嘗試提取事實上的訂單屬性時,多維數據集無法確定它應該將數據與哪些屬性進行拼接。SSAS - >多維數據集瀏覽/查詢 - >具有與另一維度的三種關係的維度,檢索數據時出錯

我基本上只是試圖找出處理這種情況的最佳方法。顯然,我可以規範化表格,並創建三個專用於上面指定的類型的分配表,這些類型可以緩解問題。我只是想知道是否有一種方法可以在不改變sql數據庫中表的結構的情況下在多維數據集中執行此操作。

+0

爲了澄清,是訂單事實表(/測量組)或者是它真的是一個維度? –

+0

對不起,在重新閱讀之後,我可以看到我在這個問題上有多糟糕。我已更新。訂單是一個充滿措施的事實表。 –

回答

3

有幾種方式來處理DimCustomer和FactOrders之間的關係,這取決於你如何有建模的數據...

如果FactOrders有3個領域,每個鏈接回DimCustomer像下面...

FactOrder 
    ShipperKey (FK) 
    ConsigneeKey (FK) 
    BillToKey (FK) 

DimCustomer 
    CustomerKey (PK) 

...那麼你將結束3個維度爲客戶在您的SSAS數據庫。您可以通過角色扮演(1維向您的多維數據集添加3次)或3個單獨的維度實現這些維度。後者允許更多用戶友好的命名約定。

在另一方面,如果你的FactOrders表只有1場鏈接到DimCustomer像下面...

FactOrder 
    CustomerKey (FK) 

DimCustomer 
    CustomerKey (PK) 

...那麼你就需要區分「客戶類型」(託運人,收貨人,收單方)使用兩種方法1 ...


方法1:在你的DimCustomer表創建CustomerType領域,使之成爲你的SSAS項目在客戶維度的屬性...

FactOrder 
    CustomerKey (FK) 

DimCustomer 
    CustomerKey (PK) 
    CustomerType 

方法2:創建一個新的維度表(DimCustomerType),並把它添加到你的立方體...

FactOrder 
    CustomerKey (FK) 
    CustomerTypeKey (FK) 

DimCustomer 
    CustomerKey (PK) 

DimCustomerType 
    CustomerTypeKey (PK) 
+0

FactOrders有多個鏈接到Customer維度的字段,因此您的初始回覆是完美的。感謝這樣一個徹底的解釋,這將有極大的幫助。 –

相關問題