2012-10-26 32 views
1

我很難弄清楚我應該如何在SSAS中的度量值組之間實現父子關係。基本上,我只是試圖重新創建一個標準的SQL連接,以便我可以在我的父組中使用鍵時查找度量值。SSAS中度量值組之間的父子關係

例如,假設我有以下方面:

  • 家長
  • 兒童(FK:PARENTID)
  • 時間

和我有以下措施團

  • ParentFact(Keys:ParentID,TimeI d - 隨着時間的推移相關父措施)
  • ChildFact(按鍵:childID的,TIMEID - 隨着時間的推移關係到孩子措施)

我沒有任何我的事實表中創建的任何具體尺寸。

最後我只是想運行這樣的查詢在我的子表,列出措施加入到措施,在我父表:

SELECT 
    { 
     [ChildMeasure] 
     , [ParentMeasure]   
    } ON COLUMNS 
    , [Child].Children ON ROWS 
FROM 
    [MyCube] 
WHERE 
    [Time].[100] 

當此查詢運行時,子行已正確列出,以及時間ID 100的適當度量值。不幸的是,ParentMeasure都是相同的,並且似乎是時間ID爲100的所有父母的此值的彙總。我希望此列顯示每個孩子的值在時間ID 100處關聯的父母。

我在做什麼這裏錯了嗎?我是否需要爲每個FactTable創建FactDimensions,並以某種方式將這些關聯起來?我應該在我的數據源視圖中創建父級和子級之間的關聯嗎?這會使它成爲雪花圖案,我認爲我應該避免這種圖案?因爲它位於數據源中的關係表上(可能是由於數據庫開發人員以前的非規範化工作),所以我的ChildFact表實際上包含ParentID作爲度量之一。我是否應該在我的事實表中刪除任何實際上是FK的措施,或者對於我正在嘗試執行的措施是否需要某種措施?

回答

2

我不認爲你應該嘗試創建一個單一的事實表,由於明顯的粒度問題。

我想你應該使用現有的FK列在你的Cube定義中的Child Fact和Parent Dimension之間添加一個Dimension關係。

可能唯一有效的使用ParentID作爲度量值將會得到一個Distinct Count。

1

這裏沒有必要創建兩個事實。

  1. 創建一個事實表(PARENTID,childID的,TIMEID)
  2. 創建3維DimParent,DimChild,DimTime
  3. FK情況的表將參考相應的維度表
  4. 此外,檢查屬性關係如何事實與尺寸切片
+0

通過創建一個事實表,不會在我的父母和孩子之間創建一對一的關係嗎?當我通過父ID進行分組時,這會如何影響父事實的聚合? – mclark1129

+0

在這種情況下,您必須按ParentID,ChildID進行分組。 – Yogesh