我需要一個MDX查詢,它根據度量的累計和返回前N%的行。棘手的部分是該組必須基於與用於總和的不同度量來進行排序,所以使用TopPercent
函數是不可能的。在MDX中計算累計總和
爲了說明我需要什麼,下面是一個例子。我想盡可能少地購買至少1000克肉。但是,這不僅僅是包裝的重量,我想要質量,所以我想優先考慮含有最高比例肉類的產品。可用的產品是這些:
|| Name || Weight || PercentageOfMeat ||
| Product 1 | 500 | 20 |
| Product 2 | 250 | 60 |
| Product 3 | 1000 | 25 |
| Product 4 | 400 | 50 |
| Product 5 | 400 | 40 |
因此,要得到我想要的,我會第一個排序遞減通過PercentageOfMeat,以滿足我的首要任務。然後,我會累計產品的權重,直到達到1000克的限制。結果應該是產品2,產品4和產品5.這很簡單。
但在MDX中可以這樣做嗎? TopPercent
(或者在該示例的情況下,TopSum
)否則會是完美的,但它不允許我使用不同的排序和求和措施。如果我只想要最重的產品,它就會奏效。要引用文檔,函數:
按降序排列集合,並返回累積總數等於或大於指定百分比的最高值的元組集合。
我基本上需要的是TopPercent
函數不排序集,但據我所知,沒有。那麼是否有可能做我想做的或者我必須在服務器代碼中進行計算?
謝謝。我還沒有能夠嘗試這種解決方案,但它似乎值得一試。 – Carlos 2010-09-11 16:04:57
給我完全我想要的結果,所以再次感謝你。唯一的問題是它很慢,所以我必須看看我是否可以真正使用它。 – Carlos 2010-09-13 08:03:24
還有一個小問題,我希望至少得到1000克肉。該解決方案不會在結果中包含會導致總計超過1000克的產品。所以它只返回一個產品。 – Carlos 2010-09-13 08:30:18