[Mondrian] Topcount query with monetDB

Hilario Fernandes hilario.fernandes at cortex-intelligence.com
Wed Oct 16 10:36:55 EDT 2013


Hi,

I'm trying to get mondrian to execute a top count query in a native way on
monetdb.

I have set all the properties related to native execution:

mondrian­.­native­.­crossjoin­.­enable=true
mondrian­.­native­.­filter­.­enable=true
mondrian­.­native­.­nonempty­.­enable=true
mondrian­.­native­.­topcount­.­enable=true
mondrian.native.ExpandNonNative=true

the mdx:

select {} ON COLUMNS,
  {TopCount({[cidade].[cidade].Members}, 2, [Measures].[idade_SUM])} ON ROWS
from [cube]
where {}


the generated SQL:

select
    "CUBE"."ATTR_0" as "c0"
from
    "CUBE" as "CUBE"
group by
    "CUBE"."ATTR_0"
order by
    CASE WHEN sum("CUBE"."MEASURE_0") IS NULL THEN 1 ELSE 0 END,
sum("CUBE"."MEASURE_0") DESC,
    CASE WHEN "CUBE"."ATTR_0" IS NULL THEN 1 ELSE 0 END, "CUBE"."ATTR_0" ASC


And i get the error:

Query did not produce a result set. Stacktrace follows:
java.sql.SQLException: Query did not produce a result set
at nl.cwi.monetdb.jdbc.MonetStatement.executeQuery(MonetStatement.java:526)
at
org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at mondrian.rolap.SqlStatement.execute(SqlStatement.java:201)
at mondrian.rolap.RolapUtil.executeQuery(RolapUtil.java:335)
at mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:395)
at mondrian.rolap.SqlTupleReader.readMembers(SqlTupleReader.java:506)
at
mondrian.rolap.RolapNativeSet$SetEvaluator.executeList(RolapNativeSet.java:246)
at
mondrian.rolap.RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:190)
at
mondrian.olap.fun.TopBottomCountFunDef$3.evaluateList(TopBottomCountFunDef.java:84)
at
mondrian.calc.impl.AbstractListCalc.evaluateIterable(AbstractListCalc.java:71)
at mondrian.rolap.RolapResult.executeAxis(RolapResult.java:875)
at mondrian.rolap.RolapResult.evalLoad(RolapResult.java:700)
at mondrian.rolap.RolapResult.loadMembers(RolapResult.java:656)
at mondrian.rolap.RolapResult.<init>(RolapResult.java:288)
at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:671)
at mondrian.rolap.RolapConnection.access$000(RolapConnection.java:51)
at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:622)
at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:621)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)


I've run the query directly on the database and indeed, it does not return
results. I don't get whats the use of the case expressions on the order by,
and its seems to be whats causing no results do be returned. Any idea what
i'm doing wrong? Is there a problem with case expressions and monetdb that
i'm not aware?

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20131016/5019d476/attachment-0001.html 


More information about the Mondrian mailing list