Mondrian案例,Mondrian Error:MDX object

Mondrian案例

1.mdx定义

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

	 <!-- Shared dimensions -->
	 <Dimension name="Product">
		<Hierarchy hasAll="true" primaryKey="product_id">
			<Table name="product"/>
			<Level name="proName" column="product_name" uniqueMembers="true"/>
		</Hierarchy>
	</Dimension>
	<!-- end 分享的维度 -->
 
	<!-- Sales -->
	<Cube name="Sales" defaultMeasure="Unit Sales">
		<Table name="sales_fact_1997"/>
		<DimensionUsage name="Product" source="Product" foreignKey="product_id"/>
		<Measure name="Unit Sales中文" column="unit_sales" aggregator="sum" formatString="Standard"/>
		<Measure name="Store Cost" column="store_cost" aggregator="sum" formatString="#,###.00"/>
		<Measure name="Store Sales" column="store_sales" aggregator="sum" formatString="#,###.00"/>

	</Cube>
</Schema>

2.查询操作:

/**
	 * NO.2. 以product(商品[所有商品])为维度查询,1997年的销量信息
	 */
	public void two(){
		String mdxStr = "SELECT {[Measures].[Unit Sales中文], [Measures].[Store Cost], [Measures].[Store Sales]} ON COLUMNS"
			+ ",{[Product].members} ON ROWS  FROM [Sales]";
		// members,表中所有的数据
		super.excute(mdxStr);
	}


3.异常信息,.错误信息如下:

log4j:WARN No appenders could be found for logger (mondrian.olap.MondrianProperties).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" mondrian.olap.MondrianException: Mondrian Error:Failed to parse query 'SELECT {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} ON COLUMNS,{[Product].[索尼照相机]} ON ROWS FROM [Sales]'
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:967)
at mondrian.olap.ConnectionBase.parseStatement(ConnectionBase.java:100)
at mondrian.rolap.RolapConnection.parseStatement(RolapConnection.java:768)
at mondrian.olap.ConnectionBase.parseQuery(ConnectionBase.java:55)
at demo.MondrianHelp.excute(MondrianHelp.java:45)
at demo.DemoOne.one(DemoOne.java:20)
at demo.DemoOne.main(DemoOne.java:11)
Caused by: mondrian.olap.MondrianException: Mondrian Error:MDX object '[Measures].[Unit Sales]' not found in cube 'Sales'
at mondrian.resource.MondrianResource$_Def1.ex(MondrianResource.java:984)
at mondrian.olap.Util.lookup(Util.java:1031)
at mondrian.olap.Id.accept(Id.java:110)
at mondrian.olap.ValidatorImpl.validate(ValidatorImpl.java:79)
at mondrian.olap.fun.FunUtil.resolveFunArgs(FunUtil.java:2024)
at mondrian.mdx.UnresolvedFunCall.accept(UnresolvedFunCall.java:102)
at mondrian.olap.ValidatorImpl.validate(ValidatorImpl.java:79)
at mondrian.olap.QueryAxis.resolve(QueryAxis.java:213)
at mondrian.olap.ValidatorImpl.validate(ValidatorImpl.java:140)
at mondrian.olap.Query.resolve(Query.java:561)
at mondrian.olap.Query.resolve(Query.java:446)
at mondrian.olap.Query.<init>(Query.java:200)
at mondrian.olap.Query.<init>(Query.java:161)
at mondrian.olap.Parser$FactoryImpl.makeQuery(Parser.java:927)
at mondrian.parser.MdxParserImpl.selectStatement(MdxParserImpl.java:1241)
at mondrian.parser.MdxParserImpl.statement(MdxParserImpl.java:1074)
at mondrian.parser.MdxParserImpl.statementEof(MdxParserImpl.java:188)
at mondrian.parser.JavaccParserValidatorImpl.parseInternal(JavaccParserValidatorImpl.java:57)
at mondrian.olap.ConnectionBase.parseStatement(ConnectionBase.java:96)
... 5 more




查询到好多资料,都没有解决问题。结果,瞎蒙去掉中文的name属性名称还真不报错。


4.修改mdx之后

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

	 <!-- Shared dimensions -->
	 <Dimension name="Product">
		<Hierarchy hasAll="true" primaryKey="product_id">
			<Table name="product"/>
			<Level name="proName" column="product_name" uniqueMembers="true"/>
		</Hierarchy>
	</Dimension>
	<!-- end 分享的维度 -->
 
	<!-- Sales -->
	<Cube name="Sales" defaultMeasure="Unit Sales">
		<Table name="sales_fact_1997"/>
		<DimensionUsage name="Product" source="Product" foreignKey="product_id"/>
		<Measure name="Unit Sales" column="unit_sales" aggregator="sum" formatString="Standard"/>
		<Measure name="Store Cost" column="store_cost" aggregator="sum" formatString="#,###.00"/>
		<Measure name="Store Sales" column="store_sales" aggregator="sum" formatString="#,###.00"/>

	</Cube>
</Schema>

5.java代码修改之后:

	/**
	 * NO.2. 以product(商品[所有商品])为维度查询,1997年的销量信息
	 */
	public void two(){
		String mdxStr = "SELECT {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} ON COLUMNS"
			+ ",{[Product].members} ON ROWS  FROM [Sales]";
		// members,表中所有的数据
		super.excute(mdxStr);
	}

成功啦。


6.结果如下

log4j:WARN No appenders could be found for logger (mondrian.olap.MondrianProperties).
log4j:WARN Please initialize the log4j system properly.
Axis #0:
{}
Axis #1:
{[Measures].[Unit Sales]}
{[Measures].[Store Cost]}
{[Measures].[Store Sales]}
Axis #2:
{[Product].[All Products]}
{[Product].[海尔全自动冰箱]}
{[Product].[索尼照相机]}
Row #0: 1,078
Row #0: 2,007.00
Row #0: 43.12
Row #1: 23
Row #1: 2.00
Row #1: 21.12
Row #2: 55
Row #2: 5.00
Row #2: 11.00


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值