SQL Server 2008 R2 BI交互式排序解析
在BI系统中,报表的交互式排序往往是不可缺少的一项功能。如现在在系统中有一张用户购买力情况的报表。这张报表主要是根据过去五年的历史记录 分析出各个人群的购买力。企业决策层可能希望在不重新生成报表的情况下,直接对报表的内容进行排序。如这种报表默认情况是根据购买力从高到低排序,而现在 用户希望从低到高进行排序。在这种情况下,就需要使用报表的交互式排序功能。在这篇文章中,笔者就给大家介绍一下这个交互式排序功能如何在BI中使用,以 及需要注意的事项与技巧等等。
一、交互式排序可以实现的功能。
交互式排序顾名思义,就是可以在报表的级别上,同用户在排序内容上进行交互。简单的说,就是可以对已经生成的报表直接根据特定的内容进行排序。而不需要更改默认的排序规则或者重新生成报表。在BI系统中,这是一项必备的功能之一。
具体的来说,R2中的报表交互式排序功能可以实现如下两个需求。
一是可以在列标题中添加交互式排序按钮。如上面这个案例,可以在购买力这个标题中加入一个按钮。如果用户有需要根据这个列来进行重新排序,则只需要点击 一下这个列标题即可。如此用户就可以在升序与降序之间进行切换,选择自己所需要的排序格式。如果在多个标题中都添加这个按钮,那么就可以根据用户的需要, 选择需要排序的列。
二是可以在文本框中添加按钮来实现排列。这是交互式排序中比较高级的一项应用。如数据库管理员可以根据用户的需要, 在行组外部的行中的文本框中添加排序按钮。如此的话,就可以为父组行或者列、为子组行或者列或者为详细信息行或者列来指定排序的规则。同时还可以将多个字 段组合成单个表达式,然后按多个字段来进行排序。这就好像在数据库中,直接在Order By语句后面挂上多个排序字段。在数据库中,必须要有数据库管理员来操作。如果用户需要更改排序规则的话,数据库管理员每次都要在数据库中更改,显然比较 麻烦。而在报表层面,则用户可以根据自己的需要来设置。这就可以提高BI系统的界面的友好性与灵活性。在不改变SQL语句的情况下,方便用户的操作。
二、交互式排序中的五要素分析。
那么该如何实现这个报表的交互式排序呢?笔者将其总结为五要素。只要能够搞清楚这五个要素的含义以及他们之间的关系,那么交互式排序功能的实现,就是水到渠成的事情。
第一个要素:排序对象。在这个要素中,主要确定两个方面的内容。一是确定需要堆行还是对列进行排序,二是需要确定是对对个对象进行排序还是对多个对象进 行组合排序。一般来说,对列排序占了大多数情况。另外如果需要对多列进行组合排序的时候,需要注意排序的效率问题。如果报表中记录比较多,则可能组合排序 的过程会比较耗时。不过在BI中,一般的报表都是总结性的内容,所以记录数量应该不会太多。为此这个性能的问题不需要太在意。管理员只需要知道有这么一回 事即可。
第二个要素:排序的依据。在数据库设计的时候,可以根据显示的字段来排序,也可以根据未显示的字段来排序。如果是视图的话,只 要是基础表中有这个字段即可,而不一定要在视图中显示出来。对于交互式排序来说,也有这方面的问题。在这个要素中,管理员需要确定是根据列中显示的字段进 行排序,还是依据没有显示的字段进行排序?因为不同的需求对后续的操作要求有所不同。所以在这里要定义清楚。
第三个要素:排序上下文。 这是一个比较难以理解的。笔者在刚开始接触到这个内容的时候,想了好久也没有弄明白这是什么意思。根据说明自己操作了一遍,看了最终的效果才明白什么意 思。这大概就是只可意会、不可言传的含义吧。在这里笔者只把其含义说明一下,希望各位读者自己去操作一遍,会有更加深刻的体会。管理员可以在与行组关联的 行、与列组关联的列、详细信息行、父组内的子组中进行排序,或者同时在父组和子组中进行排序。简单的说,这是一种比较高级的、在局部范围之内的排序。在 BI中,会经常用到。所以这是必须要掌握的一个内容。虽然比较难以用语言表达,但是只要用户多操作几次,就可以掌握其中的诀窍。
第四个要素:按钮的位置。在上面功能分析中,笔者已经谈到过,可以将排序的按钮添加到列标题中,也可以将其添加到某个文本框中。在这一个 要素中,管理员就需要根据用户的需求来确定,到底是将排序按钮添加到哪个地方。在文本框上操作还是在列标题上操作,对于排序来说,没有实质性的影响。主要 就是看用户的操作习惯与需求而定。一般来说,不建议在同一张报表上同时在列标题和文本框上添加排序按钮。因为一不小心,就可能会有相互冲突的事件产生。而 且在实际工作中,只需要一种就可以满足用户的需求。两个都要,就有点画蛇添足的感觉了。
第五个要素:排序是否会影响到多个区域。有时候 在一个报表中,可能会有多个数据区域。如在BI系统中,可以设计两个相对独立又有相互联系的数据区域。这两个数据区域中都有日期这个字段。现在的问题是, 在报表中对其中一个区域的数据根据日期字段进行了排序,那么另外一个数据区域是否自动根据这个日期字段进行排序呢?如果需要的话,那么就必须要要对这两个 数据区域设置一定的关联,如父子关系等等。
三、在多个组中实现交互式排序。
在BI中,如果仅仅对单个组进行交互式排序,可能还不能够满足用户的全部需求。由于BI中,报表要呈现的内容比较复杂,为此往往会在同一个报表中,设置多个组。此时如果用户需要对多个组进行交互式排序,可以实现吗?
在R2中,为了满足BI系统中的这个需求,特意设置了一个功能,可以实现对多个组进行交互式排序。简单的说,如果一个报表中含有嵌套的行组、,而且每个行组都是基于单个数据集字段,则可以在这个报表中添加对父组值、子组值或者详细信息行进行排序的交互式排序按钮。
如果用户有这方面需求的话,数据库管理员就需要重新设计这张报表。需要按组合了多个字段的表达式进行分组。如还是以上面这个购买力的报表为例。在数据库 中设计的时候,是按照年龄层次、购买力两个字段(注意有先后顺序)来排列的。而用户提出来,在使用报表的时候他们可能还希望根据性别与购买能力两个字段来 进行排序。此时在这个对象设计的时候,需要将这两个字段捆绑为一个组(利用组表达式来指定)。如此的话,在报表设计的时候,就可以让用户根据这个组(其实 是两个字段)来进行排序。不过需要注意的是,如果一个组中有多个字段,其排序的时候,字段的先后顺序非常重要。这个跟OrderBy语句中的规则是一样 的。
关键字:SQL Server、数据库、报表
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解