2.1 数据准备
2.1.1 表结构
1、时间维表
主要字段
表名:time_by_day | ||
字段名称 | 描述 | 其他 |
---|---|---|
Time_id | 时间ID | 主键 |
The_date | 日期 | |
The_month | 月份 | |
quarter | 季度 | |
The_year | 年份 |
2、部门维表
主要字段
表名: department | ||
字段名称 | 描述 | 其他 |
---|---|---|
department_id | 部门ID | 主键 |
department_description | 部门名称 |
3、雇员表
主要字段
表名: employee | ||
字段名称 | 描述 | 其他 |
---|---|---|
employee_id | 雇员ID | 主键 |
full_name | 雇员名称 | |
supervisor_id | 父ID |
4、事实表
主要字段
表名: salary | ||
字段名称 | 描述 | 其他 |
---|---|---|
Pay_date | 时间ID | 外键 |
employee_id | 雇员ID | 外键 |
Department_id | 部门ID | 外键 |
salary_paid | 薪水 |
2.1.2 表关系视图
2.2 Cube制作
下面的操作将创建包含一个时间维、一个商品维和一个度量的cube模型。
1、将事实表的数据源的jdbc驱动放到schema-workbench\drivers下
2、打开mondrain设计器(workbench),设置好相关信息,测试连接数据源,并保存
3、新建Schema
4、右键Schema节点,点击"add cube",设置cube名称
5、右键点击"Add Table"添加"事实表",并选择"salary"表
6、右键点击"Add Dimension"添加时间维,设置名称、指定事实表外键(时间外键pad_date)和维度类型,时间维必须指定为"TimeDimension"
7、修改Hierarchy的名称
8、右键添加维表,并选择维表time_by_day
9、设置Hierarchy的主键为时间维表的主键the_date。
10、右键新建层次,设置名称为"年",column为"the_year",namecolumn为"the_year",levelType必须设置为"TimeYears"
11、同理,建"季"和"月"两个层次,并设置相关名称、column和namecolumn,levelType分别为"TimeQuarters"和"TimeMonths"
12、同理新建"部门维",部门为普通维度,type为"StandardDimension"
13、同理,新建商店维的层次,并做好与维表的字段对应设置
14、同理新建"雇员维",雇员为父子维度,type为"StandardDimension"
15、添加雇员维表
16、新建雇员层次,雇员是父子维,只有一个level,设置colunm、namecolumn、parentcolumn和nullparentvalue。
这里parentColumn 和nullParentValue是重要的属性: 属性parentColumn 是一个成员连接到它父亲成员的列名。在这种情况下, 它是指向雇员经理的外键。元素<Level>的子元素 <ParentExpression> 是与属性 parentColumn 有相同作用的,但是元素允许定义任意的SQL表达式, 就像元素 <Expression>. 属性 parentColumn (或者元素<ParentExpression>) 是维一向Mondrian指出层次有父子结构的。 属性 nullParentValue 是指明成员没有父成员的值 。 缺省情况下 nullParentValue="null", 但是因为许多数据库不支持null, 建模时 用其他值来代替空值,0和-1.
17、右键点击"Add Measure"新建度量
18、设置度量名称、对应事实表的字段、聚合规则
19、保存cube模型
20、保存成功后,用文本编辑器打开该xml文件,加入xml头<?xml version="1.0" encoding="UTF-8" ?>
2.3 上传cube模型
1、打开IE,在地址栏中输入地址:http://localhost:8080/mondrian/manager/
2、输入名称、描述、jdbc驱动字符串、jdbcurl地址、数据库的用户密码和选择cube模型文件。以本文档中mysql为例:
jdbc驱动字符串:
com.mysql.jdbc.Driver
URL地址:
jdbc:mysql://localhost:6688/foodmartcn?useUnicode=true&characterEncoding=GBK
3、点击"新建",完成cube模型上传