您的位置:首页 > 其它

[原创]微软BI专题-Reporting Services平台下报表数据筛选的两种方法

2008-12-08 16:34 393 查看
本文以Microsoft SQL Server 2005 Reporting Services为平台,介绍了该平台下报表数据筛选的两种常用方法:在数据集中添加筛选条件,并简单地介绍了filter函数的使用方法;在报表的组件 中的筛选界面中添加筛选条件。

在日常报表的开发过程中,经常会遇到类似下面的问题:希望满足条件A>0或(和)B>0的显示,否则不显示,这样的报表应该怎样设计?

假定一个案例背景:某呼叫中心需要统计电话的放弃量情况,指标有队列放弃量、座席放弃量、总呼入电话量,现在需要在报表中显示有放弃量的记录。
下面基于SQL Server 2005 Reporting Services平台给出两种方法:

方法一:在报表的数据集中加上筛选条件
加Filter之前的MDX语句:

以下是代码片段:
____select { [Measures].[队列放弃量], [Measures].[座席放弃量], [Measures].[总来电量] }
ON COLUMNS,
NON EMPTY{[日期].[年月日].[日].ALLMEMBERS____ * [小时].[小时].[小时].ALLMEMBERS} ON ROWS FROM [TestCUBE]
结果如图1所示。



而实际想要显示的数据需满足的条件是:只显示有放弃时的数据,即队列放弃量或座席放弃量不同时为0。

根据以上逻辑在MDX语句中加上Filter条件,Filter函数语法如下:
Filter(Set_Expression, Logical_Expression )

其中,Set_Expression表示返回集的有效MDX表达式,Logical_Expression计算结果为 True或False的MDX逻辑表达式。最终Filter函数返回根据搜索条件对集合进行筛选所得到的集合。
加Filter后的MDX语句:

以下是代码片段:
____select { [Measures].[队列放弃量], [Measures].[座席放弃量], [Measures].[总来电量] }
ON COLUMNS,
NON EMPTY{filter( [日期].[年月日].[日].ALLMEMBERS____ * [小时].[小时].[小时].ALLMEMBERS, [Measures].[队列放弃量]>0 or [Measures].[座席放弃量]>0 )} ON ROWS FROM [TestCUBE]


从图2中可以看到,队列放弃量和座席放弃量都是0的数据已经被筛除了。

方法二:在报表属性里加筛选条件
打开报表布局,找到报表“属性”里的“筛选器”,在“表达式”里填入:“=Fields!队列放弃量.Value+Fields!座席放弃量.Value”;“运算符”里选择“>”;“值”里填入“=0”,如图3所示.



预览报表如图4所示.



两种方法的比较:
方法一通过MDX语句来实现筛选条件,较方法二更灵活一些,如果出现更复杂的逻辑,方法二很难实现的时候可以考虑使用方法一。而方法二表达直观,更易于维护。

两种方法都面临一个问题:即在大量数据集中筛选到报表服务器中的少数数据,而这些筛选在数据库中进行要比在客户等级上更简单一些,也可以减轻浏览报表的数据压力。所以在哪里使用筛选需要对具体的问题加以分析,根据情况而定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: