本文简要介绍了如何使用
Pentaho 的相关工具在关系型
数据库基础上建立dimension 和cube,
以及如何利用这些cube产生一个报表或图表。
首先要在
数据库里建立维度表和事实表。
维度表和事实表就是数据库里普通的物理表, 我们可以使用create table … 这样的语句来建立,
也可以使用工具建立。常见的维度包括时间,区域,产品等。
如时间维度表可以包括 date_tk, year, quarter, month, week, day_of_month,
day_of_year 等字段,其中 date_tk 是主键。 区域维度表可以包括 region_tk, country, province,
city, district等字段,其中 region_tk 是主键。事实表里保存的是在上述维度下的实际销售数据,销售目标等如 date_tk,
region_tk, quantity, 其中date_tk, region_tk是外键, quantity是销售数据。
可以看出事实表和维度表之间是参照的关系,事实表是外建表,维度表是主键表。根据参照方式不同,又可以分为雪花模型或星型模型等。
建立维度表还要注意数据粒度,也就是用户在查看数据时可以看到的最细节的数据。不同级别或类型的人员,关心的数据粒度是不同的。
现在的维度表和事实表还只是数据库里的表, 为了能够使用 MDX 来查询这些表, 我们还要建立维度表和事实表之间的逻辑关系, 也就是建立一个
cube, 建立cube 可以使用 Mondrian workbench, 当然熟练的话也可以用手写, 实际上就是一个 xml 文件.
下图是使用Mondrian workbench建立cube.
图里建立三个维度,分别是Date, Country, MTM, 分别对应着数据库里相应的日期维度表,区域维度表,产品维度表,
在每个维度下还要至少设置Hierachy 和不同的 Level.
图里还建立两个Cube, 分别对应着数据库里相应的销售数据事实表和销售目标事实表, 这两个两个cube还可以组成一个virture cube,
以便把不同粒度的数据放在一起。建好cube 后, 可以保存为一个 XML 文件,如 india_sellout.xml,
在以后的流程里会使用到这个文件.
Cube 建好后下面的工作就是抽取数据, 并将数据生成报表了, 整个过程全部使用了Kettle, 分为下面几个步骤:
1. 1. 使用 Kettle 设计一些常用的时间变量,如当前日期,当前月份,当前季度, 任务开始时间等,这些变量会在后面的步骤中使用,
如MDX 查询, 报表的标题, 邮件的subject 等等。
2. 使用 Kettle建立数据抽取和加载流程,通过该流程可以将事实数据从业务数据库加载到事实表中。数据抽取的参考流程图如下:
3. 建立生成报表和发送邮件作业,生成报表使用 Mondrian Output 作业项,发送邮件使用 Mail 作业项。
在 Mondrian Output 对话框里要指定刚才创建的 Cube 文件(india_sellout.xml)的位置以及要生成的Excel
报表文件的位置, 在 MDX 查询文本框里写出相应的 MDX 查询语句。在MDX 查询里可以使用变量,变量的格式是 ${var1}.
另外还要指定一个 xsl 样式文件, 用来设置 Excel 输出文件的样式(主要是字体, 单元格背景色, 文字大小).
4. 将数据加载流程和生成报表作业结合起来,就形成一个包括了抽取数据, 生成报表, 发送邮件的完整的作业,该作业可以由用户手工执行也可以由
操作系统定时执行。
阅读(5502) | 评论(0) | 转发(0) |