During testing of a system that uses Mondrian to create database cubes and KendoUI to generate dynamic MDX queries, it seems a cube using "CalculatedMember" is interpreted by KendoUI as "KPI". This is then listed as an item in "FIELDS". However, when clicking on this item, it is stuck in eternal loading while Mondrian logs an error for the query:
ERROR XMLAParser:113 - Method : XMLAResponseParser.parseFaultyResponse(String xmlaResponse), Mondrian Error : The Mondrian XML: No enum constant mondrian.xmla.RowsetDefinition.MDSCHEMA_KPIS
ERROR XmlaServlet:324 - Errors when handling XML/A message
mondrian.xmla.XmlaException: Mondrian Error:XMLA SOAP Body processing error
at mondrian.xmla.impl.DefaultXmlaServlet.handleSoapBody(DefaultXmlaServlet.java:511)
at mondrian.xmla.XmlaServlet.doPost(XmlaServlet.java:318)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at com.utel.stinga.spa.analytics.server.XmlaRequestFilter.doFilter(XmlaRequestFilter.java:119)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: No enum constant mondrian.xmla.RowsetDefinition.MDSCHEMA_KPIS
at java.lang.Enum.valueOf(Enum.java:236)
at mondrian.xmla.RowsetDefinition.valueOf(RowsetDefinition.java:54)
at mondrian.xmla.XmlaHandler.discover(XmlaHandler.java:2857)
at mondrian.xmla.XmlaHandler.process(XmlaHandler.java:671)
at mondrian.xmla.impl.DefaultXmlaServlet.handleSoapBody(DefaultXmlaServlet.java:507)
... 20 more
It seems Mondrian does not accept MDSCHEMA_KPIS. During further debugging, it seems KendoUI indeed sends this RequestType "MDSSCHEMA_KPIS":
Request Payload:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Header/><Body><Discover xmlns="urn:schemas-microsoft-com:xml-analysis"><RequestType>MDSCHEMA_KPIS</RequestType><Restrictions><RestrictionList><CATALOG_NAME>LTE</CATALOG_NAME><CUBE_NAME>LTE_10000</CUBE_NAME></RestrictionList></Restrictions><Properties><PropertyList><Catalog>LTE</Catalog></PropertyList></Properties></Discover></Body></Envelope>
Why do KendoUI interpret CalculatedMember as KPI? Why does KendoUI send request for MDSCHEMA_KPIS to Mondrian when this is not accepted?