技术开发 频道

另眼看BI项目报表设计

  【IT168技术分析评论】

  中小企业的BI项目(或者决策支持项目)一般包括数据仓库设计、ETL的设计与开发、报表的设计与开发和Portal的设计与开发。其中,BI报表是交付给客户最重要的项目成果,BI项目成败很大程度上取决于报表的设计与开发。本文总结了笔者这几年来的BI报表设计与开发经验,请读者批评指正。

  一、 BI项目前端展现架构

  当前主流的BI前端展现工具采用B/S结构管理和发布报表,方便用户可以通过Internet/Intranet来访问和浏览。通常企业会购买一种或几种前端工具,通过这些前端工具制作发布报表,然后将这些报表集成到企业的Portal上,用户可以通过登陆Portal来访问和查看报表。(架构如下图1所示)。这种架构有以下优点:

  (1)采用B/S架构不需要配置客户端,并且只要是能够访问Internet/Intranet都能访问,极大的提高了用户查看报表的便利性。

  (2)解决报表工具Licenses问题,通过报表的集成过程的二次开发节约Licenses用户个数 。

  (3)解决了报表工具的发布之后访问风格与客户企业应用风格不一致的问题。

  (4)可以有更灵活的用户和权限管理方式(如:一些企业里使用Windows AD认证,而报表工具会有一套自己的用户认证方式,可以通过Portal的方式进行二次开发可以进行统一的AD认证)。


        (图1)

  二、 报表的分类

  一些BI项目可能最终交付给客户的有上百张或者几百张报表,但是这些报表归纳起来分两种: 普通的报表和分析报表。普通的报表是那种需求比较简单,格式比较固定,没有或者比较简单的查询条件的报表,一般这一类报表是给业务人员在日常的业务操作中用到的一些报表,这些报表只是简单的把业务人员需要的数据展现出来。分析报表是需求比较复杂,查询条件灵活,涉及到切片和钻取,展现出来的数据不是简单的从数据库中得到,而是能根据查询出来的数据对照业务规则得出一些结论的报表。分析报表一般面对业务人员和企业的管理人员。

  例如在一个通过连锁店的方式销售某类产品的公司来说,每个店面的店长可能对每天的销售的产品和每天的营利情况比较关心,对于他来说,他的需求就是需要一张当天销售所有产品的清单,这个清单可以包括产品的名称、数量、单价、顾客、促销手段等信息,另外一张报表就是营利报表,他想知道今天营利多少了,那几种商品营利最高,那几种商品卖的最多等。而对于该公司的管理层如区域经理来说,除了知道他所管理辖的店面的这些信息之外,他还想知道,在他所管辖的店面里,在一个时间段内(可能是某几天、月、季、年)的销售、营利、有效的促销手段的分析,同过去的相同时段销售的对比分析等分析。这里需要为这个区域经理设计:销售分析报表,这个报表可以让用户输入某个时间段或者日期,展示天或月或季或年的所属店面的销售数据;同比或环比报表,用户可以输入店面、日期等条件,列出时间段内的同比或者环比的分析;促销手段的分析,通过用户输入日期、店面的等条件,列出前几名或后几名的促销方式,并且通过钻取,可以分别看到每一种促销方式的明细信息。从这个报表的分析可以看到那种促销方式更有效,分析后几名的促销方式失败在那里。很明显,这个例子中店长要求的每天销售产品的清单的报表就是普通报表,店长的营利报表和区域经理的报表是分析报表。

  在实际的项目过程中,还存在一类报表就是仪表盘,本质上来说,仪表盘也是一种分析报表,只不过这个分析报表可能只展示一些企业经营过程中的KPI数据,仪表盘面对的用户是企业高层管理者。仪表盘中展示的KPI数据可以通过一级一级的钻取看到相对明细的数据。

  报表按照实现方式还可以分析平面报表和多维报表。

  三、 报表设计方法

  通常情况下,我们通过报表工具来制作报表,不同的报表工具制方法不尽相同,但总的分为以下三类:

  (1)、通过拖曳的方式制作报表。

  (2)、通过SQL的方式来得到报表的数据,然后通过报表工具展示出来。

  (3)、使用JSP、ASP.NET等网络编程语言开发页面的方式制作报表。

  通过拖曳的方式制作报表,一般情况下是先连接到某种Cube数据库,然后根据报表的需求,拖曳不同的维度和事实生成不同的报表。另外一种情况是通过拖曳经过转换的数据库字段的方式来实现报表,BO报表工具就是先将要分析的数据表通过中间层(Universe)工具定义成有意义的维度字段和度量字段,然后通过报表工具连上定义好的中间层(Universe),通过拖曳定义好的中间层的维度和度量生成不同的报表。通过连到Cube拖曳生成报表的方式主流前端工具都支持,如:Hyperion、Cognos、BO、SQL SERVER 2005 Reporting Service。这种方法主要优点是当Cube(或者BO的Universe)设计好了之后,可以很快的设计出报表。一般情况下,当Cube(universe)设计好了之后,向业务人员开放,由业务人员根据业务的变化情况设计报表。

  通过SQL方式查询到报表的结果,然后通过报表工具展现出来,这种方式笔者通过SQL SERVER 2005 Reporting Service实现过,SQL SERVER 2005 Reporting Service允许用户通过写SQL从关系数据库获取展示的结果集(也可以通过MDX语句查询多维数据库获得结果集),然后通过Reporting Service工具制作报表。这种方式优点是可以结合SQL的灵活性和Reporting Service强大的报表功能,设计出的报表更好的满足客户的需求。

  通过页面的方式制作报表是最灵活制作方式,可以不受报表工具的限制设计和制作报表。一般情况下使用JSP或者ASP.NET,通过SQL的方式从后台数据仓库读取数据,制作成网页的形式发布报表。

四、 报表的测试和交付

  报表在交付用户之前需要经过严格的测试,报表的测试主要包括下面几个方面:

  (1)、报表数据的正确性测试

  (2)、报表的速度测试

  (3)、报表页面测试(用字,编排)

  报表数据正确性测试一般需要保证报表展示的数据要和后台数据库的数据一致(但最终要和业务部门的手工报表一致,但达到这个要求前提是经过ETL过来的数据是正确的),通常是先运行一张报表,然后根据报表的查询条件和指标业务逻辑通过手工写SQL的方式从后台数据库算出其中的每一个指标,对照这两种方式的结果,找出不一致结果进行修正。报表的速度也是一个重要的测试内容,一般情况下,通过测试人员的访问来测试报表的运行速度,对于运行慢的报表要进行调优。对于通过SQL查询得到结果集的报表需要对SQL语句、索引、表或视图的设计等方面进行调优。对于通过Cube方式生成报表的,可以考虑对Cube数据库进行调优(设计分区或者聚合)。完成了前面两个方面的测试,还需要对报表最终交付作最后的测试,包括报表的用字、报表的编排等等有关客户习惯的测试。

  对于企业来说,报表需求是随着时间和业务变化而变化的,BI项目交付之后,维护部门还需要不断的收集新的需求,更好的为企业经营和管理服务,从中体现出BI项目的价值。

0
相关文章