Saiku_学习_02_Schema Workbench 开发mdx和模式文件

简介: 一、前言 saiku的查询都是通过cube来进行的。因此每当我们要进行一次多维度查询时,都要先修改xml、上传、重启才能生效,不仅效率低,还不利于学习和理解MDX和模式文件。 通过 workbench  图形界面工具,可以自动生成 Schema 文件   二、下载 下载地址:https://sourceforge.net/projects/mondrian/files/schema%20workbench/ 选择最新版下载解压即可。

一、前言

saiku的查询都是通过cube来进行的。因此每当我们要进行一次多维度查询时,都要先修改xml、上传、重启才能生效,不仅效率低,还不利于学习和理解MDX和模式文件。

通过 workbench  图形界面工具,可以自动生成 Schema 文件

 

二、下载

下载地址:https://sourceforge.net/projects/mondrian/files/schema%20workbench/

选择最新版下载解压即可。

 

三、数据库初始化

运行这款软件需要依赖一个数据库,Mysql或者Postgresql都可以,我使用的是mysql,下面是网络上搜索到的建表语句:

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,num)values(1,1,1,340.34,2);
insert into sale(saleId,proId,cusId,unitPrice,num)values(2,1,2,140.34,1);
insert into sale(saleId,proId,cusId,unitPrice,num)values(3,2,3,240.34,3);
insert into sale(saleId,proId,cusId,unitPrice,num)values(4,3,4,540.34,4);
insert into sale(saleId,proId,cusId,unitPrice,num)values(5,4,1,80.34,5);
insert into sale(saleId,proId,cusId,unitPrice,num)values(6,5,2,90.34,26);
insert into sale(saleId,proId,cusId,unitPrice,num)values(7,6,3,140.34,7);
insert into sale(saleId,proId,cusId,unitPrice,num)values(8,7,4,640.34,28);
insert into sale(saleId,proId,cusId,unitPrice,num)values(9,6,1,140.34,29);
insert into sale(saleId,proId,cusId,unitPrice,num)values(10,7,2,740.34,29);
insert into sale(saleId,proId,cusId,unitPrice,num)values(11,5,3,30.34,28);
insert into sale(saleId,proId,cusId,unitPrice,num)values(12,4,4,1240.34,72);
insert into sale(saleId,proId,cusId,unitPrice,num)values(13,3,1,314.34,27);
insert into sale(saleId,proId,cusId,unitPrice,num)values(14,3,2,45.34,27);
View Code

 

四、配置数据源 

1.添加数据库驱动

将数据库驱动放入 drivers 文件夹中

 

 

2.配置数据源

 

 

 

 五、创建schema

1. 创建空的schema

file -> new schema

修改schema名称,命名是:qiu-schema

 

 

2.添加立方体(cube)

 schema 右键 -> add cube

修改name为 qiuCube

 

3. 在立方体里面添加事实表Table

 

4.在立方体里面添加维度:qiuDimension

 

 

 

 5.在维度下面,添加层次。

其实不需要添加,他会默认添加一下,点击qiuDimension左侧的小图标即可

 

 

 6. 在qiu-Hierarchy下面添加维度表

咱们选择的是customer

 

 

7.添加一个层次:qiuLevel

 

 

9.添加度量

 

 到这里一个简单的模式文件就建成了,点击最右侧的带有铅笔样式的图标即可看见xml文件:

 

 

<Schema name="qiuSchema">
    <Cube name="qiuCube" visible="true" cache="true" enabled="true">
        <Table name="sale">
        </Table>
        <Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="qiuDimension">
            <Hierarchy name="qiuHierarchy " visible="true" hasAll="true" allMemberName="allCoustomer" allMemberCaption="&#25152;&#26377;&#21517;&#31216;" allLevelName="all levels" primaryKey="cusid">
                <Table name="customer">
                </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="Integer" aggregator="sum" visible="true">
        </Measure>
    </Cube>
</Schema>
View Code

 

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

file -> new MDX Query,即可创建查询对话框,运行以下语句:

select
       {[Measures].qiuMeasure}
on columns,
       {([qiuDimension].[allCoustomer])}
on rows
from [qiuCube]

 

效果如下图:

 

 

七、空指针异常

原因:填写信息的时候信息不全。漏掉allLevelName、还有字段类型要为Integer

二、参考资料

1.Schema Workbench 开发mdx和模式文件

2.saiku、mondrian前奏之——立方体、维度、Schema的基本概念

3.

目录
相关文章
|
5月前
|
移动开发 监控 数据库
Greenplum【部署 02】GP 数据库 web 监控工具 Greenplum Command Center v6.6.0 安装配置及问题处理(一篇学会部署配置启动 GPCC 避坑指南)
Greenplum【部署 02】GP 数据库 web 监控工具 Greenplum Command Center v6.6.0 安装配置及问题处理(一篇学会部署配置启动 GPCC 避坑指南)
56 0
|
11月前
|
关系型数据库 MySQL 数据库连接
关于如何使用命令行新建数据库的解决方案
关于如何使用命令行新建数据库的解决方案
120 0
|
数据可视化 数据库
怎么使用可视化数据库工具 DBeaver 新建数据库表?
怎么使用可视化数据库工具 DBeaver 新建数据库表?
3743 0
怎么使用可视化数据库工具 DBeaver 新建数据库表?
|
Java 关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
|
SQL 前端开发 数据可视化
如何使用 MySQL Workbench 自动生成 ER 图、同步更新远程数据库 - MySQL Workbench 使用教程
MySQL Workbench 作为 MySQL 官方出品的数据库 GUI 管理工具,它的强大是其他免费管理工具无法匹敌的。特别是使用 MySQL Workbench 设计数据库,创建及同步 ER 图(实体关系图)的功能甚是强大。MySQL Workbench 不仅可以直接在软件中设计数据库 ER 实体关系图,而且还可以直接通过这个实体关系图,自动创建 MySQL 数据库(正向工程),也可以反过来,通过已有的 MySQL 数据库,生成 ER 图(逆向工程),当然,更厉害的地方是,可以在 MySQL ER 图上直接修改,MySQL 数据库会自动同步更新(模式同步)。
1550 0
|
SQL Java 关系型数据库
数据库版本管理工具 Flyway 简单使用
如何快速上手使用数据版本管理工具 Flyway
401 0
数据库版本管理工具 Flyway 简单使用
|
SQL Java
JeeSite3.x版本启动不自动建表
JeeSite3.x版本启动不自动建表,防止mysql区分大小写情况下重复建表
522 0
|
关系型数据库 Java MySQL
[saiku] 通过管理台配置用户、schema和数据源
原文链接:http://www.cnblogs.com/avivaye/p/4877767.html 转载该文章,只用于记录和学习。 本文简介下saiku用户的配置操作和需要注意的点   一、添加用户 Saiku默认的管理员账号是admin,密码是admin. 添加用户的操作非常的简单。
2096 0