Sql-Server
非葉級節點的自定義聚合以避免重複計算
我有一個包含以下列的事實表:
WorkerName OrderId NumberOfPackagesPerOrder
請注意,在這個事實表中既不是
WorkerName
也不是唯一的。OrderId
多個使用者可以在單個 OrderId 上工作 另請注意,NumberOfPackagesPerOrder
僅取決於OrderId
,即對於每個OrderId
,數量NumberOfPackagesPerOrder
將是相同的。我正在嘗試建構一個多維數據集,以按員工層次結構從這些數據中報告層次結構報告:
ManagerLevel1 [Total orders completed] [Total Packages Shipped] Managerlevel2 ..... ManagerLevelN Worker
由於多個工人可以處理同一個訂單,我需要避免重複計算
PackagesPerOrder
經理級別(非葉節點)。這個怎麼做?我需要什麼 MDX 腳本正確地通過僅在ing 這些 by之後對這些
SUM
NumberOfPackagesPerOrder
進行求和?DISTINCT``OrderId
注1 - 僱傭層次結構是遞歸定義的 - 級別不是靜態的。
注意 2 - 非葉節點上的管理器也可能會發送包。
解決問題的正確方法是在 SSAS 中使用多對多關係。
更多細節在這裡https://stackoverflow.com/questions/10971593/custom-aggregation-for-non-leaf-level-nodes-to-avoid-double-counting和這裡http://www.sqlbi.com/wp-內容/上傳/The_Many-to-Many_Revolution_2.0.pdf。
然後不需要 MDX。