`

Mdx查询中常见异常收集(2)

阅读更多

    前面我已整理了部分mdx查询中常见异常,这里接着贴出我学习过程中遇到的其他一些常见异常。有些已解决,还有一些未解决,希望正在学习的和熟悉mdx这一块的朋友知道解决方法的告知一下。先谢了!

 

 

 

 

异常: 8

 

[JPivot] 21 七月 2010 23:26:31,109 ERROR [Session 3DA5B31A164F01E50C42D796D221BC2F] com.tonbeller.jpivot.tags.OlapModelTag#doEndTag:

mondrian.olap.MondrianException : Mondrian Error:Named set in cube 'Sales' has bad formula

.

Caused by: mondrian.olap.MondrianException : Mondrian Error:No function matches signature '<Level>.prevMember'

 

 

解决方法:这个异常可以参看异常15。

 

 

%***************************************************************************

异常: 9

 

 

33031 [http-8088-2] ERROR com.tonbeller.wcf.controller.RequestFilter  - Error handling request

javax.servlet.ServletException : javax.servlet.jsp.JspException : com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:Syntax error at line 1, column 59, token 'EOF'

Caused by: mondrian.olap.MondrianException : Mondrian Error:Syntax error in MDX expression 'IsAncestor([Sale Region].CurrentMember,[Sale Region].[suzhou]'

    at mondrian.resource.MondrianResource$_Def0.ex( MondrianResource.java:785 )

 

解决方法:待解决

 

 

%***************************************************************************

 

 

 

异常: 10

Caused by: com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:Tuple contains more than one member of dimension '[Product Category]'.

    at com.tonbeller.jpivot.mondrian.MondrianModel.initialize( MondrianModel.java:550 )

 

解决方法:

由于我粗心,将“ . ”误写成了“ , ”,才会报上面异常。修改方法为将“ [Product Category],[All Products] ”改为“ [Product Category].[All Products] ”。

select {[Measures].[ROI],[Measures].[Number],Measures.[Number Proportion],[Measures].[Average UnitPrice],[Measures].[Total Sale],[Measures].[Product Percentage]} ON columns, NON EMPTY

  {( [Product Category],[All Products] ,[Customer Sex].[All Sex])} ON rows from [Sales]

 

 

%***************************************************************************

异常: 11

 

2474343 [http-8080-2] ERROR com.tonbeller.jpivot.tags.OlapModelTag  -

mondrian.olap.MondrianException : Mondrian Error:Internal error: Error while creating SQL dialect

    at mondrian.resource.MondrianResource$_Def0.ex( MondrianResource.java:785 )

    at mondrian.olap.Util.newInternal( Util.java:1340 )

    at java.lang.Thread.run( Thread.java:619 )

Caused by: java.sql.SQLException : Network error IOException : Connection refused: connect

 

 

解决方法:

由异常信息可看出出现此异常是由于连接数据库出错,我仔细检查了是由于将 mysql 数据库连接成了 SqlServer 数据库。

 

 

%***************************************************************************

 

异常: 12

 

154157 [http-8080-1] ERROR com.tonbeller.wcf.controller.RequestFilter  - exeption

org.apache.jasper.JasperException : javax.servlet.ServletException : javax.servlet.jsp.JspException : OlapModel/Query ${paramquery01} not found

    at org.apache.jasper.servlet.JspServletWrapper.handleJspException( JspServletWrapper.java:522 )

 

 

解决方法:

错误原因是以下代码中:

< jp:setParam query = "${ paramquery01 } " httpParam = "param" mdxParam = "ProductMember" >

<jp:mondrianQuery id="query01"

    jdbcDriver="com.mysql.jdbc.Driver"

    jdbcUrl="jdbc:mysql://localhost:3306/tezz?user=root&password=sys"

    catalogUri="/WEB-INF/queries/tezz.xml" >

select

  {[Measures].[Number],[Measures].[Average UnitPrice],[Measures].[Total Sale]} ON columns,

  {Parameter("ProductMember", [Product Category],[Product Category].[All Products])} ON rows

from [Sales]

</ jp:mondrianQuery >

</ jp:setParam >

 

jpivot setParam 标签的 query 属性值就是 mondrianQuery 标签的 id 属性值,应一致。将 query01 改为 paramquery01 即可。

 

%***************************************************************************

异常: 13

 

信息 : SessionListener: contextInitialized()

2010-7-23 8:44:12 org.apache.catalina.session.StandardManager doLoad

严重 : IOException while loading persisted sessions: java.io.EOFException

java.io.EOFException

    at java.io.ObjectInputStream$PeekInputStream.readFully( ObjectInputStream.java:2281 )

    at java.io.ObjectInputStream$BlockDataInputStream.readShort( ObjectInputStream.java:2750 )

    at java.io.ObjectInputStream.readStreamHeader( ObjectInputStream.java:780 )

    at java.io.ObjectInputStream.<init>( ObjectInputStream.java:280 )

    at org.apache.catalina.util.CustomObjectInputStream.<init>( CustomObjectInputStream.java:58 )

 

 

 

解决办法:重建项目换个项目名称。

 

%***************************************************************************

异常: 14

 

87875 [http-8088-1] ERROR com.tonbeller.wcf.controller.RequestFilter  - exeption

 

页面异常

org.apache.jasper.JasperException : An exception occurred processing JSP page /testpage.jsp at line 44

 

41: <form action="testpage.jsp" method="post">

42:

43: <%-- include query and title, so this jsp may be used with different queries --%>

44: <wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>

45: <c:if test="${query01 == null}">

46:   <jsp:forward page="/index.jsp"/>

47: </c:if>

 

 

Caused by: com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:No function matches signature '(<Set>, <Member>)'

    at com.tonbeller.jpivot.mondrian.MondrianModel.initialize( MondrianModel.java:550 )

    at com.tonbeller.jpivot.olap.model.OlapModelDecorator.initialize( OlapModelDecorator.java:132 )

 

解决方法:

我的 mdx 查询语句如下:

 

select {[Measures].[Total Sale],[Measures].[Product Percentage]} ON columns,

  {( [Product Category].[All Products].children ,[Customer Sex].[All Sex])} ON rows

from [Sales]

 

改为: select {[Measures].[Total Sale],[Measures].[Product Percentage]} ON columns,

  {( [Product Category].[All Products] ,[Customer Sex].[All Sex])} ON rows

from [Sales]

 

即可。

 

%***************************************************************************

异常: 15

 

1317609 [http-8088-1] ERROR com.tonbeller.wcf.controller.RequestFilter  - cause

javax.servlet.ServletException : javax.servlet.jsp.JspException : org.apache.jasper.JasperException : javax.servlet.ServletException : javax.servlet.jsp.JspException : com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:No function matches signature '{<Level>}'

    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException( PageContextImpl.java:858 )

 

Caused by: com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:No function matches signature '{<Level>}'

    at com.tonbeller.jpivot.mondrian.MondrianModel.initialize( MondrianModel.java:550 )

    at com.tonbeller.jpivot.olap.model.OlapModelDecorator.initialize( OlapModelDecorator.java:132 )

 

解决方案:

我的 mdx 查询语句:

select { [Sale Time].[quarterName] } ON columns,

  {[Product Category].[All Products].CHILDREN} ON rows

     from [Sales]

由于 [Sale Time].[quarterName] 只是到了级别( level ),而集合 set 中只能是 member 或者 tuple

故只需将 {[Sale Time].[quarterName]} 改为 {[Sale Time].[quarterName].AllMembers}

效果图为:

 

{[Sale Time].[quarterName].AllMembers} {[quarterName].AllMembers} 得出的效果一样。

 

若改为: {[Sale Time] } ,则效果图为:

 

若改为: {[Sale Time].[quarterName].children} ,则报异常:

Caused by: javax.servlet.ServletException : javax.servlet.jsp.JspException : com.tonbeller.jpivot.olap.model.OlapException : Mondrian Error:No function matches signature '<Level>.children'

    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException( PageContextImpl.java:858 )

同样, {[Sale Time].[quarterName].children} {[quarterName].children} 效果是一样的。

 

 

 

故我得出的结论是:

 

1. level 下面不能调用 children ,只能用 allmembers 来获得子集所有成员。 Children 可以用在层次 hierarchy 下面如: [Product Category].[All Products].children( 注意的是这里的 ”All Products” 是层次的 allMemberName 属性,而非 name 属性 , name 属性的写法是 [Sale Time.OnlyQ].children ,此时也可以用 allmembers) ;也可以直接在维度下面 , [Sale Time].children, 显示效果图为:

 

同时, allmembers 也可以用在直接维度下面如 [Sale Time]. allmembers, 显示效果图为将成员全部列出,不是下钻( drill-down )形式,操作只能是上卷( drill-up ):

 

结论 2 :两个嵌套的 level 的( name 属性)不能同时用,即 [yearName].[quarterName] 会报找不到的错误,但涉及到具体的 members 就可以用,如 [2007].[Q1].

 

涉及到具体 member 值如 [2007] ,或 [2007].[Q1] 等的 member ,后面就不能使用 member,allmembers,currentmember, 都会报上面的同样的错,但可以使用如下术语:

Children firstchild parent prevmember, nextmember

 

 

 

   异常先贴到这里,如有朋友发现错误之处还请指出,以免一错再错,误导了其他的朋友。这里说明一下:对于异常15涉及到一些截图,这里我将它们上传到文件里,若希望结合截图参看可以下载下来。

 


By the way, 供大家交流Pentaho的圈子,里面可以共享有关pentahoBI平台学习的资料,期待您的加入! http://pentahofrends.group.iteye.com/

 

 

 

0
1
分享到:
评论
3 楼 鱼丸粗面 2012-06-14  
你好,我也遇到了和楼上一样的问题,也抛出com.tonbeller.jpivot.olap.model.OlapException: Mondrian Error:Internal error: Parameter name must be a string constant异常

<jp:setParam mdxParam="year" query="query01" httpParam="param">
<jp:mondrianQuery id="query01"
catalogUri="/WEB-INF/queries/siteevalCube.xml"
dateSource="jdbc/site">
select {[Measures].[指标得分], [Measures].[指标成熟度]} ON COLUMNS
from [siteeval]
where [年度].Parameter("year")
</jp:mondrianQuery>
</jp:setParam>
还有像楼主这样的用法,是不是传过来的参数是一些集合或成员,如param=[Product Category].[All Products].[Mountain Bike]
2 楼 ruinxdgzy 2012-02-01  
wp_0623 写道
<jp:setParam query="query01" httpParam="dt" mdxParam="Param01">
......
</jp:setParam>
我如此使用jp:setParam这个标签。为什么会抛com.tonbeller.jpivot.olap.model.OlapException: Mondrian Error:Internal error: Parameter name must be a string constant这个异常呢?不知道你没有遇到过这种异常。如果有遇到能为我解答吗?十分感谢。


你好,目前我还没有遇到过你说的异常,你试一下将mdxParam的值设置为全字符的字符串看看,不含有数字,看是否还报同样的异常。
1 楼 wp_0623 2012-01-31  
<jp:setParam query="query01" httpParam="dt" mdxParam="Param01">
<jp:mondrianQuery id="query01"
catalogUri="/WEB-INF/salesReport/totalSales.xml" 
dataSource="jdbc/jpivot">
select {[Measures].[酒店订单量],[Measures].[酒店订间夜],[Measures].[酒店订单金额]} ON columns,
  {([统计日期].Parameter("Param01"),[企业])} ON rows
from [HotelOrderStat]
</jp:mondrianQuery>
</jp:setParam>
我如此使用jp:setParam这个标签。为什么会抛com.tonbeller.jpivot.olap.model.OlapException: Mondrian Error:Internal error: Parameter name must be a string constant这个异常呢?不知道你没有遇到过这种异常。如果有遇到能为我解答吗?十分感谢。

相关推荐

    15个经典的MDX查询

    15个经典的MDX查询15个经典的MDX查询

    15个经典MDX查询

    15个经典MDX查询,便于MDX学习,建议下载学习

    15个很具代表性的MDX查询语句

    15个很具代表性的MDX查询语句。15个很具代表性的MDX查询语句.docx

    MDX解决方案(第2版)-中文版.part2.rar

    第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...

    html转mdx工具htmls2mdx

    htmls2mdx &gt;&gt; 可以显示图片 &gt;&gt; 可以页面跳转 &gt;&gt; 可以处理中文 &gt;&gt; 提供源代码 &gt;&gt; 不提供维护,没时间 1. 使用CHM反编译工具把chm解包到某文件夹下,比如d:\Test\chm 2. 使用htmls2mdx,输入目录d:\Test\chm 3. htmls2...

    mdx 资料 mdx 资料mdx 资料

    mdx 资料mdx 资料mdx 资料 mdx 资料

    MDX解决方案(第2版)中文版

    第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...

    多维数据查询MDX教程(全)

    MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符...

    MDX61B中中文手册4.rar

    MDX61B中中文手册4rar,MDX61B中中文手册4

    MDX解决方案(第2版)-中文版.part1

    第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...

    MDX解决方案 第二版 中文

    MDX解决方案 第二版 中文 找了好久才找到的,这本书已经是绝版书了,有兴趣的可以下载看看。仅供学习MDX的同学参考哦。

    MDX解决方案 第二版 中文 2

    MDX解决方案 第二版 中文 2 资料仅供参考

Global site tag (gtag.js) - Google Analytics