#1 2019-12-19 13:39:21

sebjak
Member
Registered: 2019-12-18

Mondrian connection

Hello
I have a problem with a mondrian connection

I have create a MYSQL connection datamart
URL : jdbc:mondrian:Jdbc=jdbc:mysql://localhost:3306/datamart

properties :
type=OLAP
name=datamart
driver=mondrian.olap4j.MondrianOlap4jDriver
jdbcDrivers=com.mysql.jdbc.Driver

Schema : generated withe pentaho workbench

<Schema name="statistiques">
  <Dimension type="StandardDimension" visible="true" highCardinality="false" name="Clients" description="Dimension clients">
    <Hierarchy visible="true" hasAll="false">
      <Table name="dim_clients">
      </Table>
      <Level name="Clients" visible="true" table="dim_clients" column="okcuno" nameColumn="okcunm" type="String" internalType="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" description="Clients">
      </Level>
    </Hierarchy>
  </Dimension>
  <Dimension type="StandardDimension" visible="true" highCardinality="false" name="Articles" description="Articles">
    <Hierarchy visible="true" hasAll="true">
      <Table name="dim_articles">
      </Table>
      <Level name="Groupe article" visible="true" table="dim_articles" column="mmbuar" nameColumn="desi_buar" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" description="Groupe article">
      </Level>
      <Level name="Type articles" visible="true" table="dim_articles" column="mmitty" nameColumn="desi_itty" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" description="Type articles">
      </Level>
    </Hierarchy>
  </Dimension>
  <Dimension type="StandardDimension" visible="true" highCardinality="false" name="Temps" description="Temps">
    <Hierarchy visible="true" hasAll="true">
      <Table name="dim_calendrier">
      </Table>
      <Level name="Annee" visible="true" table="dim_calendrier" column="Annee" nameColumn="Annee" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
      </Level>
      <Level name="Mois" visible="true" table="dim_calendrier" column="Mois" nameColumn="Mois" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
      </Level>
      <Level name="Semaine" visible="true" table="dim_calendrier" column="Semaine" nameColumn="Semaine" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
      </Level>
    </Hierarchy>
  </Dimension>
  <Cube name="statistiques" visible="true" description="statistiques" cache="true" enabled="true">
    <Table name="fait_chiffre_affaires" alias="Chiffre_d&#39;affaires">
    </Table>
    <DimensionUsage source="Clients" name="Clients" visible="true" foreignKey="client" highCardinality="false">
    </DimensionUsage>
    <DimensionUsage source="Articles" name="Articles" visible="true" foreignKey="article" highCardinality="false">
    </DimensionUsage>
    <DimensionUsage source="Temps" name="Temps" visible="true" foreignKey="date_facture" highCardinality="false">
    </DimensionUsage>
    <Measure name="TOTAL" column="montant_total" datatype="Numeric" aggregator="sum" description="TOTAL" visible="true">
    </Measure>
  </Cube>
</Schema>




when I run the report I have this error

net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException
<br>    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:121)
<br>    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
<br>    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
<br>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
<br>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
<br>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
<br>    at java.lang.reflect.Method.invoke(Unknown Source)
<br>    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
<br>    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
<br>    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
<br>    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
<br>    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
<br>    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
<br>    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
<br>    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
<br>    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
<br>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
<br>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
<br>    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
<br>    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
<br>    at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
<br>    at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
<br>    at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
<br>    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
<br>    at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
<br>    at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
<br>    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
<br>    at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
<br>    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
<br>    at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
<br>    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
<br>    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
<br>    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
<br>    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
<br>    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
<br>    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
<br>    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
<br>    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
<br>    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
<br>    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
<br>    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
<br>    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
<br>    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
<br>    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
<br>    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
<br>    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
<br>    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
<br>    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
<br>    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
<br>    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
<br>    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
<br>    at java.lang.Thread.run(Unknown Source)
<br>Caused by: java.lang.NullPointerException
<br>    at mondrian.rolap.RolapSchema$PhysLink.deriveSql(RolapSchema.java:2046)
<br>    at mondrian.rolap.RolapSchema$PhysLink.&lt;init&gt;(RolapSchema.java:2004)
<br>    at mondrian.rolap.RolapSchema$PhysSchema.addLink(RolapSchema.java:945)
<br>    at mondrian.rolap.RolapSchemaUpgrader.registerRelation(RolapSchemaUpgrader.java:3013)
<br>    at mondrian.rolap.RolapSchemaUpgrader.convertHierarchy(RolapSchemaUpgrader.java:2800)
<br>    at mondrian.rolap.RolapSchemaUpgrader.convertDimension(RolapSchemaUpgrader.java:2707)
<br>    at mondrian.rolap.RolapSchemaUpgrader.convertCubeDimension(RolapSchemaUpgrader.java:735)
<br>    at mondrian.rolap.RolapSchemaUpgrader.convertCube(RolapSchemaUpgrader.java:201)
<br>    at mondrian.rolap.RolapSchemaUpgrader.convertSchema(RolapSchemaUpgrader.java:2208)
<br>    at mondrian.rolap.RolapSchemaUpgrader.upgrade(RolapSchemaUpgrader.java:125)
<br>    at mondrian.rolap.RolapSchemaLoader.loadStage0(RolapSchemaLoader.java:254)
<br>    at mondrian.rolap.RolapSchemaLoader.createSchema(RolapSchemaLoader.java:4303)
<br>    at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:210)
<br>    at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:62)
<br>    at mondrian.rolap.RolapConnection.&lt;init&gt;(RolapConnection.java:160)
<br>    at mondrian.rolap.RolapConnection.&lt;init&gt;(RolapConnection.java:84)
<br>    at mondrian.olap.DriverManager.getConnection(DriverManager.java:112)
<br>    at mondrian.olap.DriverManager.getConnection(DriverManager.java:68)
<br>    at mondrian.olap4j.MondrianOlap4jConnection.&lt;init&gt;(MondrianOlap4jConnection.java:153)
<br>    at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.&lt;init&gt;(FactoryJdbc4Plus.java:323)
<br>    at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.&lt;init&gt;(FactoryJdbc41Impl.java:118)
<br>    at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
<br>    at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:139)
<br>    at java.sql.DriverManager.getConnection(Unknown Source)
<br>    at java.sql.DriverManager.getConnection(Unknown Source)
<br>    at net.datenwerke.rs.saiku.service.saiku.OlapUtilServiceImpl.getOlapConnection(OlapUtilServiceImpl.java:340)
<br>    at net.datenwerke.rs.saiku.service.saiku.OlapUtilServiceImpl.getCubes(OlapUtilServiceImpl.java:141)
<br>    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:118)
<br>    ... 51 more
<br>

And it's not possible to choose the Cube
Thank's for your help

Offline

#2 2019-12-19 15:15:11

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Mondrian connection

Hi sebjak,

currently, reportserver supports mondrian 4 cubes only, please check here: https://reportserver.net/en/tutorials/upgrade-30/

"In ReportServer 3.0.3, the Saiku and Mondrian libraries were upgraded to 3.8 and 4.x, respectively. These are in most of the cases not backward compatible. This means the following:
Pivot table variants: you have to create new variants, configure them, and save them again.
Mondrian datasources: if your Mondrian XML schema is defined in reportserver, you shall upgrade the schema to version 4, i.e. it must contain: "<Schema name="YourSchema" metamodelVersion="4.0">". More information here."

Your schema definition seems not to be version 4.0 ( no metamodelVersion="4.0" )

Thus said, we are working on support of Mondrian 3 datasources too.

Regards,
Eduardo

Offline

#3 2019-12-19 15:52:53

sebjak
Member
Registered: 2019-12-18

Re: Mondrian connection

Tnanks for your return
Maybe you know if a schema workbench soft exist for version 4 ?

Offline

#4 2019-12-19 22:09:29

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Mondrian connection

Hi sebjak,

I would recommend you to use the pivot report of a dynamic list. Internally, a mondrian cube is created dynamically and you have all advantages of a dynamic list + mondrian without having to write / maintain the XML cube manually. And the interface is the same interface you have with cube reports. Internally, as I mentioned, a pivot report is a cube report. The only difference is that the XML schema is created and maintained by reportserver. Please take a look at this: https://reportserver.net/en/guides/user … amic-List/
All the ad-hoc reporting advantages of the dynamic list are of course available in pivot reports too.

Regards,
Eduardo

Offline

#5 2019-12-20 13:19:28

sebjak
Member
Registered: 2019-12-18

Re: Mondrian connection

Hi
thank's for the answer
I have a look about the solution ! Sorry but I have a new question ?
on the left of the screen you have Pivot/preview
On m'y screen, I only have preview !

Have I miss something during the setup ?

Thank's

Offline

#6 2019-12-20 14:51:07

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Mondrian connection

Hi sebjak,

you first have to activate the pivot mode, like this:

https://reportserver.net/en/guides/user … amic-List/

"To switch to Pivot mode choose the Pivot option from the toolbar and acknowledge the subsequent check. This will trigger a reload of the Dynamic List now in Pivot mode. The effect is that the aspects list configuration and preview have been replaced by Dimensions/Measures and Pivot/Preview. The aspects parameters, computed columns and pre filter remain visible and are identical to before.

"

You should see a "pivot" button in your dynamic list.

Regards,
Eduardo

Offline

#7 2019-12-20 15:05:19

sebjak
Member
Registered: 2019-12-18

Re: Mondrian connection

Sorry but I don't have the button in the toolbar
I have
Export excel / Send to / Schedule !

Offline

#8 2019-12-20 15:22:17

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Mondrian connection

Hi sebjak,

this is an enterprise feature, you may use an enterprise evaluation to take a look at the functionality, or you can take a look at the demo system here:
http://demo.raas.datenwerke.net/?locale=en  (demoadmin, demoadmin)

You should see the "pivot" button in every dynamic list.

Regards,
Eduardo

Offline

#9 2019-12-23 09:17:29

sebjak
Member
Registered: 2019-12-18

Re: Mondrian connection

Hello
Ok I understand why now. I use the community version for the moment, in order to understand the soft.
If I want an OLAP, I must writh the xml Schema in mondrain  version 4.

Thank's for your help

Offline

#10 2019-12-23 15:46:05

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Mondrian connection

Hi sebjak,

in order to understand the software, I would recommend the enterprise evaluation version. There you can see how easy it is to use pivot reports, you don't have to maintain xml cubes by hand, it is done automatically smile you can download a 45-day trial enterprise version from here: https://reportserver.net/en/get-enterprise/

Regards,
Eduardo

Offline

Board footer

Powered by FluxBB