Schema Workbench 开发mdx和模式文件

一、前言

安装了saiku之后,每次修改schema文件,非常耗时,每次都要经历若干步骤:修改xml、上传、重启才能生效,并且非常不利于学习和理解MDX和模式文件,踌躇之际,发现了这个工具,十分小巧方便!saiku安装过程可参考上一篇博客:http://www.cnblogs.com/liqiu/p/5183894.html

二、下载

这是一个pentaho的一个工具,有很多版本,下载地址:https://sourceforge.net/projects/mondrian/files/schema%20workbench/3.11.0/

下载之后,执行里面的启动命令即可,windows执行:workbench.bat;linux执行:workbench.sh。我使用的是mac,效果如图:

 

三、初始化数据:

运行这款软件肯定依赖一个数据库,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);

4、配置数据源

点击下面右下脚的图标:

配置数据库链接:

我选择的是PostgreSql,确认即可

5、核心步骤,创建schema

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="&#25152;&#26377;&#21517;&#31216;">
                <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文件替换进去,重新点击铅笔样式的图标即可充新生成

6、添加MDX语句,测试模式文件

选择File,在选择MDX Query,即可创建查询对话框,插入如下语句:

select
       {[Measures].qiuMeasure}
on columns,
       {([qiuDimension].[allCustomer])}
on rows
from [qiu-cube]

效果如图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MDICT的文件制作工具 转换程序支持格式: 1) 扩展的SugarDict格式: 每个项目(词条)一行,缺省最大为32K. 格式为: 关键字 解释(就是关键字和解释之间用空格分开) 关键字: 可以是大小写的组合, 每个单词的最大长度是255个字符。 关键字和解释中的'_', '^'在转换后会被替换成空格和回车 例子: break_through /'bri:k_MQru:/ ^v. 突破^n. 突破 good ^adj.好^adj.贼好^adj.好得不得了 2) KDict解码后的tab格式 每个条目一行,关键字和解释之间用"tab"分隔. 其中的"\n"会被转换成换行 例如: good adj.好\nadj.贼好\nadj.好得不得了 3) MDict的html格式 每个项目两行 第一行是关键字 第二行开始是正文, 这里的正文应该包括关键字。可以使用html的标记(不要包含 , 这个程序会自动加上, 另注意在转换时要指明源数据为html). 如果需要显示音标的话,可以利用html指定字体就可以显示了。(参见下面的例子) 正文结束后必须用一行表示结束 例子: Whole whole (hol,hJl; houl) 在html中连接到其它关键字的方法: key 其中key是关键字,section是对应关键字页面中的section名称. 4) MDict的紧凑型html格式(Compat Html) 这个格式由两个文件组成,正文文件格式基本和2)一样,但在正文里可以使用记号。另外 一个是记号文件。 记号文件的格式: 由多个记号定义组成,每个记号定义有3行 第一行: 记号的名称(只能用数字,必须大于0,最大不超过255) 第二行: 开始字符串(可以为空) 第三行: 结束字符串(可以为空) 使用时在正文里使用`记号`(键盘左上角的那个符号)就会将后续的文字直到下一个记号前的文 字用记号定义的开始字符串和结束字符串括起来。正文里如果需要显示` 则用"`"表示。内 码应该和正文的一样(例如正文如果是用Unicode的话,记号文件也应该用Unicode) 例如: 记号文件: 1 2 3 正文文件: whole `1`whole`s`2``3`(hol,hJl; houl) 最后在显示的时候就会被替换成 whole&#%96;s(hol,hJl; houl) 备注: 如果你的数据里含有国际音标,建议使用Unicode格式 (请参考http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm) 将音标用对应的Unicode进行表示。这样只要用户装有支持IPA的字体文件就能够显示音标。 (Windows里的Lucida Console就包含有IPA对应的字体)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值