2012-06-10 46 views
0

我有以下行的事實表:非葉級節點的自定義聚集,以避免雙重計算

WorkerName,的OrderId,NumberOfPackagesPerOrder

注意,無論是WorkerName也不的OrderId在這個事實表中是獨一無二的。 多個用戶可以在一個單一的OrderId 工作,還要注意的是NumberOfPackagesPerOrder僅取決於的OrderId,即每一個的OrderIdNumberOfPackagesPerOrder的數量是相同的。

我想建立一個立方體由員工層級報告從這個數據分級報告:

 
ManagerLevel1   [Total orders completed] [Total Packages Shipped] 
    Managerlevel2 
     ..... 
     ManagerLevelN 
        Worker 

由於多個工人可以在同一個數量級上工作,我需要避免重複計算的經理PackagesPerOrder級別(非葉子節點)。

經理層次結構是遞歸定義的,即它不是靜態的。

經理也可以運送包裹。

如何做到這一點?通過在OrderId對DISTINC進行DISTINC處理之後僅對這些數據進行求和,才能正確計算SUMO NumberOfPackagesPerOrder所需的MDX Script?

+0

我可能會建議在http://dba.stackexchange.com上提問這個問題 - 總的來說,這裏的SSAS/MDX問題很少受到關注。 –

+0

會做什麼;謝謝。 – user1234883

+0

對於它的價值,我已經開始關注這裏。 – Stacia

回答

2

做到這一點,最簡單的方法是不使用的MDX腳本在所有,但實現許多一對多的關係。根據你所描述的,我不能給你一個完整的描述,但我嘲笑了一個例子,並得到了正確的值。按照您所描述的方式,我使用父級 - 子級結構爲工作人員維設置了與層級關係。我有一個包含工作人員,訂單ID和包裹數量的事實表。在最後一種情況下,軟件包的數量並不是真的必要 - 應該忽略它。我添加了第二個事實表,以便具有不同的訂單ID和包數量值。

然後在SSAS項目中,我有兩個維度 - 一個是工作人員,一個是訂單ID。

然後,我創建了一個包含兩個度量值組的立方體 - 每個事實表一個。帶有工作人員和訂單ID的人可以使用包數或行數 - 這並不重要,但需要隱藏該度量。它只是用作多對多的中間事實表。

然後,具有不同的訂單ID和包數的事實表是第二個度量值組。您可以添加一個訂單計數,並將該包的數量作爲此度量值組中的兩個單獨度量。

在尺寸使用標籤,工人和訂單ID具有(在該事實表工人和訂單ID列)到中間事實表的關係。訂單ID還與事實表有定期關係,包括訂單ID和包數。 Worker使用其他事實表作爲中間度量值組,與此事實數據表(具有唯一訂單ID的數據表)具有多對多關係。

當你設置它這樣,您的訂單數和件數在所有層級捲起正確的工人和經理。不需要MDX。

+0

謝謝Stacia。這絕對是正確的方法 - 我昨天也想到了這一點:) – user1234883