Hi!
First of all, appologizes for the verbosity of this post, hope you'll bare with me :-)
I'm currently involved in an web application that uses ADOMD to query olap cubes. As known, the ADOMD returns results in form of the CellSet. We then convert this cellset into a more "flat" structure which we use in a custom build grid (asp.net / ajax). We query the cubes by executing our own build MDX-queries (which are based on our own Report/MDX layout format, created in another tool). This application is not a "cube browsing" application, but a simplified "report-viewer with drill-down features". One of the main focus is performance and simplicity of use.
We are intersted in moving our front-end part of our application towards your new pivot grid, and therefore I'm wondering if you have any suggestions to how such and application could be adjusted to meet the requirements of the xamPivotGrid.
So my questions are:
1) Could ADOMD be used as a datasource for the PivotGrid (I reccon since the native CellSet isn't serializable, it's not a good candidate for a datasource in a Silverlight application), or do we have to "convert" the ADOMD CellSet into a FlatDataSource. If yes, do you have any examples on how to go about this task? I'm especially interested in the dynamic-issue of the data, meaning we have no idea of how the query data looks before it is executed.
2) We need to have full control over the MDX queries that are executed. By this I mean for example when a user drills down on a member, we would have to catch an event and build our own query, execute it (through adomd), parse the result and update only the part of the grid that was effected (=add children of the drilled-on member). Does the xamPivotGrid support such a scenario?
3) Do we have full control over the PivotGrid's apperance? Meaning, can we eliminate things like the "Drop Columns Here", "Drop Filters Here", "Drop Rows Here" etc, fields? We just want to show the results in a clean grid-like view. (With the only allowable user-actions to be Drill-down (on rows), Sort (by columns) and clicking a cell (for opening for example a sub-report or other detailed information).
Thank you for your time!
Regards
Jon
Hello Jon,
The Silverlight version of xamPivotGrid operates through msmdpump.dll, whereas for the WPF version there is an option to use AdomdClient of ADOMD. We also have a Silverlight sample that shows how to create a custom provider that gets the data through WCF and AdomdClient but it will be published next week.
About your questions:
1. FlatDataSource is more appropriate for scenarios where you have a list of raw data. Then the xamPivotGrid will process it and will make the needed aggregations for you.
2. With current version in order to access SSAS in Silverlight you have to use XmlaDataSource. The process of data querying here consists of two type of requests sent to the SSAS - Discover and Execute. Discover requests pull different metadata from the server – available cubes, dimensions, levels and etc. When you explore the hierarchy members every time when you change the pivot condition the XmlaDataSource through XmlaCommad class generates the Execute request. Here is where you can attach your custom logic and send your MDX query to server. You can look at XmlaCommand.ExecuteCommandAsync(IQuery, XmlaConnection) method. That’s the method you can override and use. The parameter that is type of IQuery contains information about which hierarchies are placed on rows and columns axes and what is the condition of the slicer axis. You can use that information to build your own query or you can ignore it at all. If you are interesting of that approach we can discuss it in more details.
3. You have full control over the appearance of XamPivotGrid through its control template. You have to re-style it as you keep only the parts you need (except the parts that are marked as TemplatePart).
I hope now you have the base where you can start. I’ll be of your avail for any additional questions.
Best regards.
Plamen.
Hi Plamen
I am very interested in this sample too. Can this be made available soon? It is exactly what I need.
Regards,
Brendan
Hello,
Please visit this post and find Atanas Dyulgerov's answer where is attached the sample project.
Best regards.Plamen.
Hi
Thanks for this. It is perfect. I got the ADOMD provider up and running in an hour or so, and am now working at using the service based approach to replacing my connection to Analysis Services with my own custom OLAP data source.
One piece of feedback though, I think the saving and reloading of the grid state from XML should be exposed as a standard method... I have read a post and implemented it where it describes how to save/load from XML, and it's working fine - but it was a huge pain! If only the grid itself knew how to save/load it's own state.
Thanks again,
Remove the typeof(bool) - parameter.
did you have already the solution fot that exception?
Some helpo would be great.
Ângelo Moreira.
I am getting an error which doesn't make any sense to me.
AdomdConnectionSettings.cs
The following line throws the exception below.
filterComposition.AddOlapPart<FilterViewModelBase>(typeof(IDataProvider), typeof(ICube), typeof(IHierarchy), typeof(bool));
{System.ArgumentException: Missing constructor at Infragistics.Olap.OlapComposition.AddOlapPart[T](Type[] interfaceConnectors) at igDV_Test.AdomdConnectionSettings..ctor() in C:\Users\lheinemann\Documents\Visual Studio 2010\Projects\igDV_Test\igDV_Test\AdomdConnectionSettings.cs:line 36 at igDV_Test.PivotGrid..ctor() in C:\Users\lheinemann\Documents\Visual Studio 2010\Projects\igDV_Test\igDV_Test\PivotGrid.xaml.cs:line 35}
I believe this is due to the fact that the FilterViewModelBase has no constructor ? can somebody please point me in the right direction?
Thanks