使用 Pentaho 工具创建维度报表的过程

本文简要介绍了如何使用 Pentaho 的相关工具在关系型数据库基础上建立dimension cube, 以及如何利用这些cube产生一个报表或图表。

首先要在数据库里建立维度表和事实表。 维度表和事实表就是数据库里普通的物理表 , 我们可以使用 create table … 这样的语句来建立 , 也可以使用工具建立。常见的维度包括时间,区域,产品等。[@more@]

如时间维度表可以包括 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.Modrian workbench

图里建立三个维度,分别是Date, Country, MTM, 分别对应着数据库里相应的日期维度表,区域维度表,产品维度表, 在每个维度下还要至少设置Hierachy 和不同的 Level.

图里还建立两个Cube, 分别对应着数据库里相应的销售数据事实表和销售目标事实表, 这两个两个cube还可以组成一个virture cube, 以便把不同粒度的数据放在一起。建好cube , 可以保存为一个 XML 文件,如 india_sellout.xml, 在以后的流程里会使用到这个文件.

Cube 建好后下面的工作就是抽取数据, 并将数据生成报表了, 整个过程全部使用了Kettle, 分为下面几个步骤:

1. 1. 使用 Kettle 设计一些常用的时间变量,如当前日期,当前月份,当前季度, 任务开始时间等,这些变量会在后面的步骤中使用, MDX 查询, 报表的标题, 邮件的subject 等等。

2. 使用 Kettle建立数据抽取和加载流程,通过该流程可以将事实数据从业务数据库加载到事实表中。数据抽取的参考流程图如下:

kettle extract data

1. 3. 建立生成报表和发送邮件作业,生成报表使用 Mondrian Output 作业项,发送邮件使用 Mail 作业项。

生成报表和发送邮件流程如下图:resserver.php?blogId=37422&resource=mondrian_job.jpg

Mondrian Output 对话框里要指定刚才创建的 Cube 文件(india_sellout.xml)的位置以及要生成的Excel 报表文件的位置, MDX 查询文本框里写出相应的 MDX 查询语句。在MDX 查询里可以使用变量,变量的格式是 ${var1}. 另外还要指定一个 xsl 样式文件, 用来设置 Excel 输出文件的样式(主要是字体, 单元格背景色, 文字大小).

mondrian output dialog

4. 将数据加载流程和生成报表作业结合起来,就形成一个包括了抽取数据, 生成报表, 发送邮件的完整的作业,该作业可以由用户手工执行也可以由操作系统定时执行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14366449/viewspace-1017908/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14366449/viewspace-1017908/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值