[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