我的查询中有两个需求 第一:根据我的尺度制作一个已排序的产品清单。销量较高的产品应首先出现。
ProductCode Sales
----------- ------------
123 18
332 17
245 16
656 15
第二:在我的预分类产品清单上累积总和。
ProductCode Sales ACC
----------- ------------ ----
123 18 18
332 17 35
245 16 51
656 15 66
我在MDX下面写了以达到上述目标:
WITH
SET SortedProducts AS
Order([DIMProduct].[ProductCode].[ProductCode].AllMEMBERS,[Measures]. [Sales],BDESC)
MEMBER [Measures].[ACC] AS
Sum
(
Head
(
[SortedProducts],Rank([DIMProduct].[ProductCode].CurrentMember,[SortedProducts])
)
,[Measures].[Sales]
)
SELECT
{[Measures].[Sales] ,[Measures].[ACC]}
ON COLUMNS,
SortedProducts
ON ROWS
FROM [Model]
但是运行大约需要3分钟,有关如何优化代码的任何建议,还是正常的?
我共有9635个产品
答案 0 :(得分:0)
如果你对谷歌进行快速研究,有不同的方法来实现它(这里也有很多答案)。
那就是说,我会试着用这种不同的方式来计算你的跑步总数
MEMBER [Measures].[SortedRank] AS Rank([Product].[Product].CurrentMember, [SortedProducts])
MEMBER [Measures].[ACC2] AS SUM(TopCount([SortedProducts], [Measures].[SortedRank]) ,[Measures].[Internet Sales Amount])
我不知道TopCount
对于你的情况是否会比Head
执行得更快,但是例如你在AdventureWorks多维数据集上我的测试机器上的查询使用Head或TopCount函数需要相同的时间。
希望这有帮助