R2虽然只是SQLServer数据库的一个中间版本,但是在很多方面比2008有很大的改善。如在报表、数据中心、主数据服务等方面都有不菲的表现。在这里笔者就先给大家介绍一下R2在报表上的优化。
一、支持地图图层功能。
要了解地图图层那么就必须要先了解图层的概念。这个概念比较抽象。做一个形象的比喻,就好像是一张千层饼,每一层饼上都有各自的内容的,{zh1}才组合成一张饼。如果用过Fhotshop等作图软件的用户,可能对此会有更加深入的了解。因为这个作图软件中就采用了层的技术。每一层都包含特定的内容。如现在有一个简单的动画,一个精灵图像上移动。这个动画就有两层。其中精灵是一层,而背景是另一层。精灵靠前,背景在后面。
在R2的报表工具中,也实现了这个地图图层的功能。通过这个地图图层,数据库管理员可以在报表中容纳空间和分析数据,而且还可以跟微软的虚拟地球无缝集成。如现在用户需要实现这么一项功能,输入一个省份,然后报表上对应的身份就以高亮的颜色显示。这就需要用到这个地图图层的新功能。具体的应用在后续的技术文章中,笔者会做详细的介绍。各位读者若感兴趣的话,可以关注笔者后续的文章。
二、支持聚合计算功能。
聚合计算是报表中最基本的一项功能。如现在有一张报表,显示的是订单明细的内容。现在某个用户需要知道1月份的订单明细,并计算出总金额。则就可以通过聚合计算来完成。但是在以前的版本中,这个聚合计算有一个限制,即聚合计算出来的结果不能够再参与这张报表的其他运算。
这是什么意思呢?笔者再以这张报表为例。如现在需要根据客户统计出1月份各个客户的订单金额。此时需要用到一个汇聚运算。接下去还需要分析各个客户的订单金额比。此时虽然可以再统计一下总的金额来分析,但是此时由于没有直接引用{dy}次的聚合计算结果,在数据量比较多的情况下,会造成重复运算,影响报表产生的效率。而如果要直接对{dy}次聚合运算的结果进行再次运算,包括简单的加减乘除,在以前的版本中都是不行的。如需要对{dy}次计算出来的每个客户的接单金额(直接通过报表的聚合运算获得)再进行汇总,就无法实现。因为无法对聚合运算的结果再进行第二次聚合运算。可能在数据库中可以完成,但是在报表中无法对聚合运算的结果进行第二次聚合运算。
在R2版本中这种情况有所改善。可以允许数据库管理员计算其他聚合计算结果的汇总值。简单的说,就是允许对聚合计算的结果在报表层面再次对其进行计算,以实现动态生成报表的需要。如在上面这个例子中,就可以直接对{dy}次汇总的值再进行一次汇总计算。而不需要再对所有的纪录进行汇总。在记录比较多,以百万计的时候,这个特性可以xx重复计算,提高报表生成的效率。再如,如果要计算每个客户的订单金额占总金额的比例,也可以直接在以上两个聚合计算的结果上完成。即{dy}次聚合运算所得出来的结果(每个客户的金额总结)然后再分别除以第二次聚合运算的结果(当月订单金额总计),然后再折算成白本比即可。
总之在R2中,增加了聚合运算的功能,允许数据库管理员计算其他聚合计算结果的汇总值。这个特性正是很多数据库管理员在设计报表的时候所需要的。笔者觉得这个特性来得有点迟。
三、具有指示器功能。
在R2的报表中,还有一个比较让人惊喜的功能就是“指示器”,它可以显示某个值的状态。
如现在有一张业绩考核的报表。其分数为5分制。其中4分以上含4分为优秀;3分以上为良好,2分以上为及格,2分以上未及格。现在给从数据库中读取一个数据,然后判断其是出于哪个阶段。
在以前的版本中,需要在数据库中完成相关的计算。即先根据相关的规则,在数据库中做一个视图。然后再在报表中引用这个视图。由于中间多了几个环节,必然会影响到最终报表生成的效率。特别是数据量比较多的时候,这个用户的等待时间明显延长。
而现在在R2的报表工具中,对了一个指示器的功能。这个指示器主要就是用来显示某个数据的状态。也就是说,可以在报表中设置好相关的规则。然后从数据库中直接读取数据(省去了一个视图生成的过程),在生成报表的时候同时判断这个数据所处的状态。由于不需要再数据库中生成视图,此时报表生成的时间就会短许多。
除了以上的改进之外,R2数据库版本中对于报表的优化还有很多地方。如增加了报表部件,使得对象可以重复使用或者在多个报表之间进行共享等等。如用户在创建报表的时候可能需要有像“邮件签名”那样的内容,即在报表的头部显示公司的名字、联系方式等等。此时就可以通过报表部件将其这些内容设置为一个对象。在其他报表中就可以直接对其加以引用。当然这个对象中的值会根据基础表中的值改变而改变。
另外在子报表、页面布局、呈现方式、交互功能、钻取访问、条件可见性等等多个方面都有优化。笔者在这里只是举了几个比较经典的案例。在以后的应用中,笔者会对此进行展开并举例。各位读者若对这些内容有兴趣的话,可以关注笔者后续的内容。