![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
95% utilization, generally for several minutes. msmdsrv.exe utilization is quite low during this period. Even if the user cancels the pivot, Excel |
#2
| |||
| |||
|
|
We're running Excel as a client to several moderate-sized cubes that have several dimensions in the 5-30k member ranges. We also have a number of calculated measures, although no other calculated members in the non-measures dimensions. Excel is installed on the same PC as AS, and users access Excel through a Terminal Server session. When the users pivot using the large dimensions, Excel will grab the CPU at 95% utilization, generally for several minutes. msmdsrv.exe utilization is quite low during this period. Even if the user cancels the pivot, Excel utilization may remain high for a minute or so after the query is cancelled. What's happening here? I assumed that the Analysis Server would take most of the CPU time, delivering the result of the query to the Excel client. Instead, it looks like Excel (accessing only about 30-40 megs of the 2 gigs available on the server) is trying to perform the entire process on its own. I've tried changing the client cache size in the .oqy file to 75, presumably to give Excel access to more memory, but this doesn't seem to make an appreciable difference. I don't know if the .oqy file is read every time a pivot table query is made or just when the pivot table is first created. Does anyone have any suggestions? The calculated measures use some complex MDX that can't be replicated easily in the underlying SQL databases, so I can't get rid of them. I'd like to push more processing to analysis services, or give Excel more memory. Thanks. Jon Pearce Director, Analytics and Reporting DGA Partners, Inc. jpearce@the domain below dgapartners.com |
#3
| |||
| |||
|
|
We're running Excel as a client to several moderate-sized cubes that have several dimensions in the 5-30k member ranges. We also have a number of calculated measures, although no other calculated members in the non-measures dimensions. Excel is installed on the same PC as AS, and users access Excel through a Terminal Server session. When the users pivot using the large dimensions, Excel will grab the CPU at 95% utilization, generally for several minutes. msmdsrv.exe utilization is quite low during this period. Even if the user cancels the pivot, Excel utilization may remain high for a minute or so after the query is cancelled. What's happening here? I assumed that the Analysis Server would take most of the CPU time, delivering the result of the query to the Excel client. Instead, it looks like Excel (accessing only about 30-40 megs of the 2 gigs available on the server) is trying to perform the entire process on its own. I've tried changing the client cache size in the .oqy file to 75, presumably to give Excel access to more memory, but this doesn't seem to make an appreciable difference. I don't know if the .oqy file is read every time a pivot table query is made or just when the pivot table is first created. Does anyone have any suggestions? The calculated measures use some complex MDX that can't be replicated easily in the underlying SQL databases, so I can't get rid of them. I'd like to push more processing to analysis services, or give Excel more memory. Thanks. Jon Pearce Director, Analytics and Reporting DGA Partners, Inc. jpearce@the domain below dgapartners.com |
#4
| |||
| |||
|
#5
| |||
| |||
|
#6
| ||||
| ||||
|
|
Hi Mosha, thank you for providing an answer on this matter. I have some difficulties with the advice you provided. As a matter of fact shifting the workload from excel to the server does prevent excel from grabbing memory alltogether and the analysis server does not grab a hold of the same amount of memory. |
|
As far as MDX is concerned, excel does generate the MDX. Therefore the problem seems to lie inside excel. I have heard that this might have something to do with the nonemptycrossjoin function which does not work for calculated members. How does one change excel's manner of creating MDX statements? |
|
Also, a great part of the problem lies in relatively large dimensions (50,000+ members) with little or no hierarchy. |
|
Again, thank you for your answer. I have the impression that the mistake is not in dimensional design, but in PTS or excel. Will Microsoft provide a solution for this problem any time soon? |
#7
| |||
| |||
|
|
It is not possible to change the manner in which Excel generates MDX. I also disagree that Excel generates "inefficient" MDX. I beleive the problem lies with the complexity of the calculated members inside the cube. If you create the same view using Analysis Manager Cube Browser, or some other 3rd party tool - does it perform differently? |
#8
| |||
| |||
|
|
Yes! Undoubtedly! I have commented on this issue for years. Every other tool I have tried that generates its own MDX is much, much faster with calculated measures! |
|
In Excel, the only way (of which I am aware) to see the MDX is to use the MDX Property of the PivotTable object in VBA. Take a look at the MDX shown. Now, I can't be certain that said MDX is actually what is used--since the MSDN Library says, http://msdn.microsoft.com/library/de...l/xlpromdx.asp "Returns a String indicating the MDX (Multidimensional Expression) that WOULD be sent to the provider to populate the current PivotTable view." (Capitalization of WOULD added for emphasis.) Very strange description, IMO. |
|
I am an engineer and the lead user of a group using Analysis Services in a fairly uncommon matter--not to analyze business data, but to analyze energy use data. I led our group to OLAP/Analysis Services several years ago, and was the person working with the OLAP developer in designing the measures. Many of our measures are semi-additive. I am an Excel developer, and love Excel, and I build prototypes of most of our specialized tools using Excel prior to getting our development team to build more robust, server-based versions. The query speed issue with Excel is the ONLY thing keeping us from using Excel for all of our analysis tasks, since it is otherwise superior to other tools for our purposes. I wish I knew the extent to which various Excel add-ins improve the situation.+ |
#9
| |||
| |||
|
|
Jon, with your calculated measures, make sure that you have defined a non empty behaviour within the cube manager. This will speed up calculation, because AS does not attempt to calculate a cell (which can not be calculated since one of the necessary values is empty) any more. HTH, Lutz |
#10
| |||
| |||
|
|
Hi Jon, While I cannot give you specific feedback, because it will greatly depend on the structure of your cube, dimensions and on the MDX used in calculated members, I can try to explain some general symphtoms you are seeing. 1. The architecture of Analysis Services is such that by default it tries to offload most of the calculations to the client side. The reasoning is that if you have many clients, the computations can be distributed across each one of them, therefore easying the load on the server. Since in your scenario you have both Excel and the server on the same machine and you use Terminal Services, it doesn't really matter who does the work - client (Excel in this case) or server. You can use Lutz's advice of providing Execution Location=3 (as well as Default Isolation Mode=1) in the connection string if you have weak client machines on the slow links connected to very powerful server. 2. The reason why you see Excel using CPU after the query is canceled is most probably because Excel uses asynchronious query execution, which spawns new thread to do all the work, and UI thread is responsible for the "Cancel" button. When you hit cancel, Excel regains the control, but the asynchronious thread will continue to run for some time. Typically this time should not be long, but again depending on MDX you use in calculated members, it can be longer. So my best advice to you would be to optimmize the MDX expressions in your calculated members. There are many different techniques to optimize MDX - and there are many resources to look for. You can start with George Spofford's book "MDX Solutions" which has chapter about it. Maybe if you post your expressions in this newsgroup, some people will also be able to help. HTH, Mosha. -- ================================================== Mosha Pasumansky - www.mosha.com/msolap Development Lead in the Analysis Server team All you need is love (John Lennon) Disclaimer : This posting is provided "AS IS" with no warranties, and confers no rights. ================================================== |
![]() |
| Thread Tools | |
| Display Modes | |
| |