安装了saiku以后,每次修改schema文件,很是耗时,每次都要经历若干步骤:修改xml、上传、重启才能生效,而且很是不利于学习和理解MDX和模式文件,踌躇之际,发现了这个工具,十分小巧方便!saiku安装过程可参考上一篇博客:http://www.cnblogs.com/liqiu/p/5183894.htmlhtml
这是一个pentaho的一个工具,有不少版本,下载地址:https://sourceforge.net/projects/mondrian/files/schema%20workbench/3.11.0/linux
下载以后,执行里面的启动命令便可,windows执行:workbench.bat;linux执行:workbench.sh。我使用的是mac,效果如图:sql
运行这款软件确定依赖一个数据库,Mysql或者Postgresql均可以,我使用的是PostgreSql,下面是网络上搜索到的建表语句:数据库
CREATE TABLE sale ( saleid integer NOT NULL, proid integer, cusid integer, unitprice double precision, num integer, CONSTRAINT sale_pkey PRIMARY KEY (saleid) ); CREATE TABLE customer ( cusid integer NOT NULL, gender character(1), CONSTRAINT customer_pkey PRIMARY KEY (cusid) ); CREATE TABLE product ( proid integer NOT NULL, protypeid integer, proname character varying(32), CONSTRAINT product_pkey PRIMARY KEY (proid) ); CREATE TABLE producttype ( protypeid integer NOT NULL, protypename character varying(32), CONSTRAINT producttype_pkey PRIMARY KEY (protypeid) ); insert into Customer(cusId,gender) values(1,'F') insert into Customer(cusId,gender) values(2,'M') insert into Customer(cusId,gender) values(3,'M') insert into Customer(cusId,gender) values(4,'F') insert into producttype(proTypeId,proTypeName)values(1,'电器') insert into producttype(proTypeId,proTypeName)values(2,'数码') insert into producttype(proTypeId,proTypeName)values(3,'家具') insert into product(proId,proTypeId,proName)values(1,1,'洗衣机') insert into product(proId,proTypeId,proName)values(2,1,'电视机') insert into product(proId,proTypeId,proName)values(3,2,'mp3') insert into product(proId,proTypeId,proName)values(4,2,'mp4') insert into product(proId,proTypeId,proName) values(5,2,'数码相机') insert into product(proId,proTypeId,proName)values(6,3,'椅子') insert into product(proId,proTypeId,proName)values(7,3,'桌子') insert into sale(saleId,proId,cusId,unitPrice,number)values(1,1,1,340.34,2) insert into sale(saleId,proId,cusId,unitPrice,number)values(2,1,2,140.34,1) insert into sale(saleId,proId,cusId,unitPrice,number)values(3,2,3,240.34,3) insert into sale(saleId,proId,cusId,unitPrice,number)values(4,3,4,540.34,4) insert into sale(saleId,proId,cusId,unitPrice,number)values(5,4,1,80.34,5) insert into sale(saleId,proId,cusId,unitPrice,number)values(6,5,2,90.34,26) insert into sale(saleId,proId,cusId,unitPrice,number)values(7,6,3,140.34,7) insert into sale(saleId,proId,cusId,unitPrice,number)values(8,7,4,640.34,28) insert into sale(saleId,proId,cusId,unitPrice,number)values(9,6,1,140.34,29) insert into sale(saleId,proId,cusId,unitPrice,number)values(10,7,2,740.34,29) insert into sale(saleId,proId,cusId,unitPrice,number)values(11,5,3,30.34,28) insert into sale(saleId,proId,cusId,unitPrice,number)values(12,4,4,1240.34,72) insert into sale(saleId,proId,cusId,unitPrice,number)values(13,3,1,314.34,27) insert into sale(saleId,proId,cusId,unitPrice,number)values(14,3,2,45.34,27)
点击下面右下脚的图标:windows
配置数据库连接:网络
我选择的是PostgreSql,确认便可ide
5.1 建立空的schema工具
5.2 修改schema名称,命名是:qiu-schema学习
5.3 添加立方体测试
命名是:qiu-cube
5.4 在立方体里面添加事实表
5.5 在立方体里面添加维度:qiuDimension
5.6 在维度下面,添加层次。其实不须要添加,他会默认添加一下,点击qiuDimension左侧的小图标便可
5.7 在qiu-Hierarchy下面添加维度表,我们选择的是customer
5.8 继续添加一个层次:qiuLevel
到这里最困难的都已经完成了
5.9 添加度量
到这里一个简单的模式文件就建成了,点击最右侧的带有铅笔样式的图标便可看见xml文件:
<Schema name="qiu-schema"> <Cube name="qiu-cube" visible="true" cache="true" enabled="true"> <Table name="sale" schema="public" alias=""> </Table> <Dimension type="StandardDimension" visible="true" foreignKey="cusid" name="qiuDimension"> <Hierarchy name="qiuHierarchy" visible="true" hasAll="true" allMemberName="allCustomer" allMemberCaption="所有名称"> <Table name="customer" schema="public" alias=""> </Table> <Level name="qiuLevel" visible="true" column="gender" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> </Level> </Hierarchy> </Dimension> <Measure name="qiuMeasure" column="num" datatype="Numeric" aggregator="sum" visible="true"> </Measure> </Cube> </Schema>
若是上面有遗漏的部分,把这个xml文件替换进去,从新点击铅笔样式的图标便可充新生成
选择File,在选择MDX Query,便可建立查询对话框,插入以下语句:
select {[Measures].qiuMeasure} on columns, {([qiuDimension].[allCustomer])} on rows from [qiu-cube]
效果如图: