`

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查询

    2. 查询所有商店中销售前10名的产品类别: 这里利用了`TopCount`函数,它可以直接获取产品类别中的前10个,依据是Unit Sales的值。这个函数自动按照降序排序,返回销售额最高的10个产品类别。 3. 查询在美国过去三...

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

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

    mdx 资料 mdx 资料mdx 资料

    6. **MDX查询(Queries)**:使用MDX语句来选择、过滤、聚合立方体中的数据,如`SELECT [Measures].[Sales] ON COLUMNS, [Time].[Year].[2022] ON ROWS FROM [SalesCube]`。 7. **切片与骰子(Slicing & Dicing)**:...

    MDX简介,对mdx的简单介绍

    MDX(MultiDimensional Expressions)是一种专门设计用于访问和查询多维数据仓库的语言,尤其在Microsoft Analysis Services环境中被广泛应用。MDX不仅限于微软的产品,也被其他知名的商业智能(BI)和数据分析软件...

    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资料.rarmdx资料.rar

    2. **MDX子查询和脚本**:说明如何在MDX中嵌套查询,以及如何编写脚本来实现更复杂的逻辑。 3. **MDX最佳实践**:提供在实际应用中使用MDX时的技巧和建议,以避免常见陷阱。 4. **数据钻取和切片**:展示如何使用...

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

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

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

    在这一章节中,作者会详细介绍MDX查询的执行过程,包括查询解析、优化、上下文处理等多个方面。通过了解MDX查询的内部机制,可以帮助开发者更好地设计查询语句,减少不必要的性能开销。同时,本章也会涉及到如何处理...

    mdx基本语法-例子

    - **查询Cube**:使用MDX编写查询语句,通过ADO MD中的`Command`对象执行这些查询,并将结果存储在一个`Cellset`对象中。 - **检索和操作数据集**:通过遍历`Cellset`对象中的`Cell`,可以获取特定维度组合下的...

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

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

Global site tag (gtag.js) - Google Analytics