Quantcast
Channel: SQL Server Analysis Services Forum
Viewing all articles
Browse latest Browse all 2472

MDX Performance Issue

$
0
0

We use the below MDX code to do the Audit calculations but it's performing very poorly, Any suggestions would be greatly appreciated!! Currently this query takes 3 mins on a server and it's quite cpu/memory intensive.

I've tried replicating the query on Adventure Works - (Replicated query threw an out of memory exception on my laptop)

WITH MEMBER [Measures].[FIFO_Price] AS
IIF([Measures].[Order Quantity] <> 0,[Measures].[Extended Amount]/[Measures].[Order Quantity],NULL)


MEMBER [Measures].[MPrice]AS
IIF([Measures].[Order Quantity] <> 0,[Measures].[Sales Amount]/[Measures].[Order Quantity],NULL)


MEMBER [Measures].[Cost difference] AS
abs([Measures].[MPrice] - [Measures].[FIFO_Price])
 

MEMBER [Measures].[Cost difference %] AS
IIF([Measures].[FIFO_Price] <> 0 , ABS(ROUND(([Measures].[Cost difference]/[Measures].[FIFO_Price])*100,2)),0)

MEMBER [Measures].[Cost difference Original] AS
([Measures].[MPrice] -  [Measures].[FIFO_Price])

MEMBER [Measures].[COD] AS
([Measures].[Cost difference Original] * [Measures].[Order Quantity])

MEMBER [<1%pos] AS
IIF([Measures].[FIFO_Price] <> 0 AND [Measures].[MPrice] > 0 AND [Measures].[Order Quantity] > 0 AND
[Measures].[Cost difference %] < 1.0,
SUM(DESCENDANTS([Customer].[Customer Geography].CurrentMember, [Customer].[Customer Geography].[Customer])
,[Measures].[COD])
,NULL)


MEMBER [1-5%pos] AS
IIF([Measures].[FIFO_Price] <> 0 AND [Measures].[MPrice] > 0 AND [Measures].[Order Quantity] > 0 AND
[Measures].[Cost difference %] >= 1.0 AND [Measures].[Cost difference %] <= 5.0,
SUM(DESCENDANTS([Customer].[Customer Geography].CurrentMember, [Customer].[Customer Geography].[Customer])
,[Measures].[COD])
,NULL)

MEMBER [5-10%poslow] AS
IIF([Measures].[FIFO_Price] <> 0 AND [Measures].[MPrice] > 0 AND [Measures].[Order Quantity] > 0 AND
[Measures].[Cost difference %] >= 5.0 AND [Measures].[Cost difference %] <= 10.0,
SUM(DESCENDANTS([Customer].[Customer Geography].CurrentMember, [Customer].[Customer Geography].[Customer])
,[Measures].[COD])
,NULL)

MEMBER [>10%poshigh] AS
IIF([Measures].[FIFO_Price] <> 0 AND [Measures].[MPrice] > 0 AND [Measures].[Order Quantity] > 0 AND
[Measures].[Cost difference %] > 10.0,
SUM(DESCENDANTS([Customer].[Customer Geography].CurrentMember, [Customer].[Customer Geography].[Customer])
,[Measures].[COD])
,NULL)

SELECT {([Measures].[Cost difference %]),([Measures].[Cost difference Original]),
([<1%pos]),([1-5%pos]),([5-10%poslow]),([>10%poshigh]),([Measures].[Sales Amount])
} ON 0
,FILTER(NONEMPTY( 
({DESCENDANTS([Customer].[Customer Geography].[Country].&[United States], [Customer].[Customer Geography].[Customer])} 
+{DESCENDANTS([Customer].[Customer Geography].[Country].&[Canada], [Customer].[Customer Geography].[Customer])}
+{DESCENDANTS([Customer].[Customer Geography].[Country].&[United Kingdom], [Customer].[Customer Geography].[Customer])}
)
* [Product].[Product Categories].[Product]),
ROUND( [Measures].[Sales Amount],4) <>0) ON 1
FROM [Adventure Works];

Thanks in advance.


Viewing all articles
Browse latest Browse all 2472

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>