简介
Mondrian提供了国际化支持,Saiku只需要把参数传递给Mondirian即可。
配置步骤
1、修改mondrian.properties文件
mondrian.rolap.localePropFile=locale
2、在WEB-INF/classes添加locale_zh_CN.properties
test.dimension.date.caption=日期 test.dimension.date.allMemberCaption=全部 test.dimension.date.allLevelName=全部 test.dimension.date.year.caption=年 test.dimension.date.quarter.caption=季度 test.dimension.date.month.caption=月份 test.dimension.date.day.caption=日 test.cube.test.measure.member_count=会员数量 test.cube.test.measure.order_count=订单数量
这里的中文是unicode编码
3、在schema文件里面引用,用%{属性名}
<Dimension name="date" caption="%{test.dimension.date.caption}"> <Hierarchy hasAll="true" primaryKey="dateKey" allLevelName="%{test.dimension.date.allLevelName}"> <View alias="vDate"> <SQL><![CDATA[select * from DimDate where dateKey>=20120101 and dateKey<curdate() ]]></SQL> </View> <Level name="year" column="year" uniqueMembers="true" caption="%{test.dimension.date.year.caption}" /> <Level name="quarter" column="quarter" uniqueMembers="true" caption="%{test.dimension.date.quarter.caption}" /> <Level name="month" column="month" uniqueMembers="true" caption="%{test.dimension.date.month.caption}" /> <Level name="date" column="dateKey" uniqueMembers="true" caption="%{test.dimension.date.day.caption}" /> </Hierarchy> </Dimension> <Cube name="test"> <Table schema="test" name="test" /> <DimensionUsage name="date" source="date" foreignKey="allotDate" /> <DimensionUsage name="salary" source="salary" foreignKey="salary" /> <Measure name="member count" column="memberId" aggregator="distinct-count" caption="%{test.cube.test.measure.member_count}" /> <Measure name="order count" column="memberId" aggregator="count" caption="%{test.cube.test.measure.order_count}" /> </Cube>
4、添加数据源
type=OLAP name=test driver=mondrian.olap4j.MondrianOlap4jDriver Locale=zh_CN DynamicSchemaProcessor=mondrian.i18n.LocalizingDynamicSchemaProcessor location=jdbc:mondrian:Jdbc=jdbc:mysql://10.10.10.128:3306/zhenai_warehouse;Catalog=res:test/test.xml; username=etl password=etl@123456
5、修改类org.saiku.datasources.connection.SaikuOlapConnection,并更新到saiku-service-2.5.jar中
Class.forName(driver); OlapConnection connection; //connection = (OlapConnection) DriverManager.getConnection(url, username, password); connection = (OlapConnection) DriverManager.getConnection(url, props); final OlapWrapper wrapper = connection; OlapConnection tmpolapConnection = (OlapConnection) wrapper.unwrap(OlapConnection.class);
6、效果见附件