[原创]微软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语句:
结果如图1所示。
而实际想要显示的数据需满足的条件是:只显示有放弃时的数据,即队列放弃量或座席放弃量不同时为0。
根据以上逻辑在MDX语句中加上Filter条件,Filter函数语法如下:
Filter(Set_Expression, Logical_Expression )
其中,Set_Expression表示返回集的有效MDX表达式,Logical_Expression计算结果为 True或False的MDX逻辑表达式。最终Filter函数返回根据搜索条件对集合进行筛选所得到的集合。
加Filter后的MDX语句:
从图2中可以看到,队列放弃量和座席放弃量都是0的数据已经被筛除了。
方法二:在报表属性里加筛选条件
打开报表布局,找到报表“属性”里的“筛选器”,在“表达式”里填入:“=Fields!队列放弃量.Value+Fields!座席放弃量.Value”;“运算符”里选择“>”;“值”里填入“=0”,如图3所示.
预览报表如图4所示.
两种方法的比较:
方法一通过MDX语句来实现筛选条件,较方法二更灵活一些,如果出现更复杂的逻辑,方法二很难实现的时候可以考虑使用方法一。而方法二表达直观,更易于维护。
两种方法都面临一个问题:即在大量数据集中筛选到报表服务器中的少数数据,而这些筛选在数据库中进行要比在客户等级上更简单一些,也可以减轻浏览报表的数据压力。所以在哪里使用筛选需要对具体的问题加以分析,根据情况而定。
在日常报表的开发过程中,经常会遇到类似下面的问题:希望满足条件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] |
而实际想要显示的数据需满足的条件是:只显示有放弃时的数据,即队列放弃量或座席放弃量不同时为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语句来实现筛选条件,较方法二更灵活一些,如果出现更复杂的逻辑,方法二很难实现的时候可以考虑使用方法一。而方法二表达直观,更易于维护。
两种方法都面临一个问题:即在大量数据集中筛选到报表服务器中的少数数据,而这些筛选在数据库中进行要比在客户等级上更简单一些,也可以减轻浏览报表的数据压力。所以在哪里使用筛选需要对具体的问题加以分析,根据情况而定。
相关文章推荐
- 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法
- [原创]水晶报表数据填充(一种推模式,两种拉模式)类库
- 重置表单数据的两种方法【原创】
- [原创]微软BI专题-一种动态显示Matrix中Total背景颜色的方法
- [原创]微软BI专题-Reporting Service 实用技巧之用背景图美化报表
- 大整数专题之大整数相加【附过程详解+两种方法+测试数据+例题】
- c++交换数据所用的两种方法
- Android提交数据到服务器的两种方式四种方法
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
- 数据归一化和两种常用的归一化方法
- oracle中数据文件移动或者改名的两种方法
- ava构造和解析Json数据的两种方法详解一
- 使用ajax异步校验数据的两种方法
- 提交数据到服务器的两种方式四种方法
- [转]eclipse中的两种Jre 及 Jre与Jdk的区别+[原创]在Myeclipse中配置Javadoc的方法
- Java构造和解析Json数据的两种方法详解
- 解决TextView数据不能更新的问题以及Android Button事件响应函数的两种方法
- SQL Server 批量插入数据的两种方法
- 【原创】C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)
- SQL Server 批量插入数据的两种方法