- 浏览: 159738 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yo8237233:
多谢分享
Pentaho平台搭建之初始化mysql数据库--详细步骤记录 -
lingyun6100:
按楼主说的操作了 还是没有打印出mdx语句,很郁闷。
Mondrian解析MDX成sql语句的分析与整理 -
jcyanfan:
补充一个:
Caused by: mondrian.olap ...
Mondrian中MDX查询使用时收集的bug及异常处理小结 -
mmmxcy:
非常感谢,这个工具帮了我大忙!
Word转PDF时自动生成书签(目录) -
datawarehouse:
初始化Oracle数据库 的确是头疼的事。
Pentaho平台搭建之初始化mysql数据库--详细步骤记录
前面我已整理了部分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。
%***************************************************************************
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
)
解决方法:待解决
%***************************************************************************
异常:
9
异常: 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]
即可。
%***************************************************************************
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}
效果图为:
异常:
15
{[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/
- 异常15.rar (57.2 KB)
- 下载次数: 31
评论
<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]
......
</jp:setParam>
我如此使用jp:setParam这个标签。为什么会抛com.tonbeller.jpivot.olap.model.OlapException: Mondrian Error:Internal error: Parameter name must be a string constant这个异常呢?不知道你没有遇到过这种异常。如果有遇到能为我解答吗?十分感谢。
你好,目前我还没有遇到过你说的异常,你试一下将mdxParam的值设置为全字符的字符串看看,不含有数字,看是否还报同样的异常。
<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这个异常呢?不知道你没有遇到过这种异常。如果有遇到能为我解答吗?十分感谢。
发表评论
-
在线联机分析(OLAP)小结
2012-11-07 16:40 1565联机分析处理 多维分析是以多维的形式组织数据,并且采 ... -
MDX的3种数据源配置及简化JSP中配置
2010-11-15 21:03 2443在jpivot 应用程序的 jsp ... -
简单MDX中冒号(:)的使用说明
2010-08-15 12:24 1692在一本书上看到了在mdx中冒号的使用说明,于是 ... -
Mondrian解析MDX成sql语句的分析与整理
2010-07-25 11:29 8568不久前, 在同事的努力下,他找到了如何设置使Mondr ... -
Mondrian中MDX查询使用时收集的bug及异常处理小结
2010-07-21 21:32 9273由于要做多维报表的展现,需要使用OLAP的引擎Mon ... -
MDX动态参数的跳转_Jpivot的clickable标签的使用
2010-07-20 21:39 2997最近在学习使用MDX查询语言,对MDX的语法有 ... -
在电脑中添加一个Access数据源
2010-07-20 19:57 1826在运行Mondrian自带的Demo实例时,需要加载其自带的数 ...
相关推荐
2. 查询所有商店中销售前10名的产品类别: 这里利用了`TopCount`函数,它可以直接获取产品类别中的前10个,依据是Unit Sales的值。这个函数自动按照降序排序,返回销售额最高的10个产品类别。 3. 查询在美国过去三...
MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符...
6. **MDX查询(Queries)**:使用MDX语句来选择、过滤、聚合立方体中的数据,如`SELECT [Measures].[Sales] ON COLUMNS, [Time].[Year].[2022] ON ROWS FROM [SalesCube]`。 7. **切片与骰子(Slicing & Dicing)**:...
MDX(MultiDimensional Expressions)是一种专门设计用于访问和查询多维数据仓库的语言,尤其在Microsoft Analysis Services环境中被广泛应用。MDX不仅限于微软的产品,也被其他知名的商业智能(BI)和数据分析软件...
第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...
htmls2mdx >> 可以显示图片 >> 可以页面跳转 >> 可以处理中文 >> 提供源代码 >> 不提供维护,没时间 1. 使用CHM反编译工具把chm解包到某文件夹下,比如d:\Test\chm 2. 使用htmls2mdx,输入目录d:\Test\chm 3. htmls2...
2. **MDX子查询和脚本**:说明如何在MDX中嵌套查询,以及如何编写脚本来实现更复杂的逻辑。 3. **MDX最佳实践**:提供在实际应用中使用MDX时的技巧和建议,以避免常见陷阱。 4. **数据钻取和切片**:展示如何使用...
第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...
在这一章节中,作者会详细介绍MDX查询的执行过程,包括查询解析、优化、上下文处理等多个方面。通过了解MDX查询的内部机制,可以帮助开发者更好地设计查询语句,减少不必要的性能开销。同时,本章也会涉及到如何处理...
- **查询Cube**:使用MDX编写查询语句,通过ADO MD中的`Command`对象执行这些查询,并将结果存储在一个`Cellset`对象中。 - **检索和操作数据集**:通过遍历`Cellset`对象中的`Cell`,可以获取特定维度组合下的...
第1章 MDX入门 第2章 计算成员和命名集简介 第3章 MDX中的通用计算和选择 第4章 MDX查询上下文与执行 第5章 命名集与集的别名 第6章 MDX中的排序和分类 第7章 MDX高级应用 第8章 使用Microsoft Analysis ...