Mondrian Error:Internal error:Error while executing query

嬉戏猴 2011-08-29 02:59:05
最近在架构一个Mondrian,但是出错不知道怎么解决,看到的朋友帮帮忙。
错误如下:
JPivot had an error ...

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select {[Measures].[SL], [Measures].[PJDJ], [Measures].[ZXSE]} ON COLUMNS, {([CPLB].[SYCP], [KHXB].[SYXB])} ON ROWS from [Sales] ]
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select {[Measures].[SL], [Measures].[PJDJ], [Measures].[ZXSE]} ON COLUMNS,
{([CPLB].[SYCP], [KHXB].[SYXB])} ON ROWS
from [Sales]
]
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.tonbeller.wcf.controller.RequestFilter$MyHandler.normalRequest(RequestFilter.java:139)
at com.tonbeller.wcf.controller.RequestSynchronizer.handleRequest(RequestSynchronizer.java:127)
at com.tonbeller.wcf.controller.RequestFilter.doFilter(RequestFilter.java:263)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select {[Measures].[SL], [Measures].[PJDJ], [Measures].[ZXSE]} ON COLUMNS,
{([CPLB].[SYCP], [KHXB].[SYXB])} ON ROWS
from [Sales]
]
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:261)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
... 20 more
Caused by: com.tonbeller.jpivot.olap.model.OlapException: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select {[Measures].[SL], [Measures].[PJDJ], [Measures].[ZXSE]} ON COLUMNS,
{([CPLB].[SYCP], [KHXB].[SYXB])} ON ROWS
from [Sales]
]
at com.tonbeller.jpivot.mondrian.MondrianModel.getResult(MondrianModel.java:305)
at com.tonbeller.jpivot.olap.model.OlapModelDecorator.getResult(OlapModelDecorator.java:54)
at com.tonbeller.jpivot.olap.model.CachingOlapModel.getResult(CachingOlapModel.java:48)
at com.tonbeller.jpivot.olap.model.OlapModelDecorator.getResult(OlapModelDecorator.java:54)
at com.tonbeller.jpivot.table.TableComponent.updateOlapModel(TableComponent.java:246)
at com.tonbeller.jpivot.table.TableComponent.render2(TableComponent.java:251)
at com.tonbeller.jpivot.table.TableComponent.render(TableComponent.java:235)
at com.tonbeller.wcf.component.RendererTag.doEndTag(RendererTag.java:137)
at org.apache.jsp.testpage_jsp._jspx_meth_wcf_005frender_005f6(testpage_jsp.java:1356)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:227)
... 23 more
Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select {[Measures].[SL], [Measures].[PJDJ], [Measures].[ZXSE]} ON COLUMNS,
{([CPLB].[SYCP], [KHXB].[SYXB])} ON ROWS
from [Sales]
]
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:785)
at mondrian.olap.Util.newInternal(Util.java:1340)
at mondrian.olap.Util.newError(Util.java:1356)
at mondrian.rolap.RolapConnection.execute(RolapConnection.java:471)
at com.tonbeller.jpivot.mondrian.MondrianModel.getResult(MondrianModel.java:279)
... 32 more
Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while loading segment; sql=[select sum("sale"."numbers") as "m0", sum((unitPrice*numbers)) as "m1" from "sale" "sale"]
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:785)
at mondrian.olap.Util.newInternal(Util.java:1340)
at mondrian.olap.Util.newError(Util.java:1356)
at mondrian.rolap.SqlStatement.handle(SqlStatement.java:211)
at mondrian.rolap.SqlStatement.execute(SqlStatement.java:142)
at mondrian.rolap.RolapUtil.executeQuery(RolapUtil.java:243)
at mondrian.rolap.RolapUtil.executeQuery(RolapUtil.java:204)
at mondrian.rolap.agg.SegmentLoader.createExecuteSql(SegmentLoader.java:341)
at mondrian.rolap.agg.SegmentLoader.load(SegmentLoader.java:75)
at mondrian.rolap.agg.Aggregation.load(Aggregation.java:166)
at mondrian.rolap.agg.AggregationManager.loadAggregation(AggregationManager.java:87)
at mondrian.rolap.FastBatchingCellReader$Batch.loadAggregation(FastBatchingCellReader.java:477)
at mondrian.rolap.FastBatchingCellReader$Batch.loadAggregation(FastBatchingCellReader.java:413)
at mondrian.rolap.FastBatchingCellReader.loadAggregation(FastBatchingCellReader.java:207)
at mondrian.rolap.FastBatchingCellReader.loadAggregations(FastBatchingCellReader.java:188)
at mondrian.rolap.RolapResult.executeBody(RolapResult.java:754)
at mondrian.rolap.RolapResult.(RolapResult.java:399)
at mondrian.rolap.RolapConnection.execute(RolapConnection.java:443)
... 33 more
Caused by: java.sql.SQLException: ORA-00942: table or view does not exist

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:112)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:351)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:896)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:383)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:986)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1125)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
at mondrian.rolap.SqlStatement.execute(SqlStatement.java:128)
... 46 more

下面是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<Schema name="tezz">

<Cube name="Sales">

<!-- 事实表sale(fact table) -->

<Table name="sale" />

<!-- 客户维 -->

<Dimension name="KHXB" foreignKey="cusId">

<Hierarchy hasAll="true" allMemberName="SYXB" primaryKey="cusId">

<Table name="Customer"></Table>

<Level name="gender" column="gender"></Level>

</Hierarchy>

</Dimension>



<!-- 产品类别维 -->

<Dimension name="CPLB" foreignKey="proId">

<Hierarchy hasAll="true" allMemberName="SYCP" primaryKey="proId"

primaryKeyTable="product">

<join leftKey="proTypeId" rightKey="proTypeId">

<Table name="product" />

<Table name="producttype"></Table>

</join>

<Level name="proTypeId" column="proTypeId" nameColumn="proTypeName"

uniqueMembers="true" table="producttype" />

<Level name="proId" column="proId" nameColumn="proName"

uniqueMembers="true" table="product" />

</Hierarchy>

</Dimension>

<Measure name="SL" column="numbers" aggregator="sum" datatype="Numeric" />

<Measure name="ZXSE" aggregator="sum" formatString="¥#,##0.00">

<!-- unitPrice*number所得值的列 -->

<MeasureExpression>

<SQL dialect="generic">

(unitPrice*numbers)

</SQL>

</MeasureExpression>

</Measure>

<CalculatedMember name="PJDJ" dimension="Measures">

<Formula>

[Measures].[ZXSE] / [Measures].[SL]

</Formula>

<CalculatedMemberProperty name="FORMAT_STRING" value="¥#,##0.00" />

</CalculatedMember>

</Cube>

</Schema>

...全文
423 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
susan_meng 2014-03-25
  • 打赏
  • 举报
回复
非常感谢楼主,这个问题困扰了我很多天,网上找的资料统统试过一遍都没能解决,真的感谢楼主,请问楼主是怎么发现这个问题的解决方案的?求教!
bcycool 2013-12-08
  • 打赏
  • 举报
回复
非常感谢 就是这个原因
maomaoyu810201 2012-02-02
  • 打赏
  • 举报
回复
这会仁兄的帖子帮了我大忙啊,哈哈,跟你做的同一个例子。
嬉戏猴 2011-10-19
  • 打赏
  • 举报
回复
问题已经解决,在这里分享给各位仁兄。问题出在cube文件中,因为本人使用的数据库是oracle,所以cube文件里面的涉及到数据库字段的名称都要改成大写,这样mondrian才能够识别。
<?xml version="1.0" encoding="UTF-8"?>

<Schema name="tezz">

<Cube name="Sales">

<!-- 事实表(fact table) -->

<Table name="SALE" />

<!-- 客户维 -->

<Dimension name="客户性别" foreignKey="CUSID">

<Hierarchy hasAll="true" allMemberName="所有性别" primaryKey="CUSID">

<Table name="CUSTOMER"></Table>

<Level name="gender" column="GENDER"></Level>

</Hierarchy>

</Dimension>



<!-- 产品类别维 -->

<Dimension name="产品类别" foreignKey="PROID">

<Hierarchy hasAll="true" allMemberName="所有产品" primaryKey="PROID"

primaryKeyTable="PRODUCT">

<join leftKey="PROTYPEID" rightKey="PROTYPEID">

<Table name="PRODUCT" />

<Table name="PRODUCTTYPE"></Table>

</join>

<Level name="proTypeId" column="PROTYPEID" nameColumn="PROTYPENAME"

uniqueMembers="true" table="PRODUCTTYPE" />

<Level name="proId" column="PROID" nameColumn="PRONAME"

uniqueMembers="true" table="PRODUCT" />

</Hierarchy>

</Dimension>

<Measure name="数量" column="SNUMBERS" aggregator="sum" datatype="Numeric" />
<!-- 注:column为数据库中对应的字段,且需注意oracle中一定为大写 -->
<Measure name="总销售额" aggregator="sum" formatString="¥#,##0.00">

<!-- unitPrice*number所得值的列 -->

<MeasureExpression>

<SQL dialect="generic">

(UNITPRICE*SNUMBERS)

</SQL>

</MeasureExpression>

</Measure>

<CalculatedMember name="平均单价" dimension="Measures">

<Formula>

[Measures].[总销售额] / [Measures].[数量]

</Formula>

<CalculatedMemberProperty name="FORMAT_STRING" value="¥#,##0.00" />

</CalculatedMember>

</Cube>

</Schema>
嬉戏猴 2011-08-29
  • 打赏
  • 举报
回复
下面是jsp页面代码:

<%@ page session="true" contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib uri="http://www.tonbeller.com/jpivot" prefix="jp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>



<jp:mondrianQuery id="query01"

jdbcDriver="oracle.jdbc.driver.OracleDriver"

jdbcUrl="jdbc:oracle:thin:@localhost:1521:orcl"

catalogUri="C:/Documents and Settings/public/Workspaces/MyEclipse 8.5/MondrianTest/WebRoot/WEB-INF/queries/tezz.xml"

jdbcUser="mondrian" jdbcPassword="mondrian" connectionPooling="false">

select {[Measures].[SL],[Measures].[PJDJ],[Measures].[ZXSE]} ON COLUMNS,

{([CPLB].[SYCP],[KHXB].[SYXB])} ON ROWS

from [Sales]

</jp:mondrianQuery>



<c:set var="title01" scope="session">Sales</c:set>

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧