此例,我们研究一下如何过滤基于多维数据集的交叉表的行或者列。
准备工作…
此例,我们使用多维数据源。具体来说,使用示例中提供的微软MSAS多维数据集。关于MSAS多维数据集示例的部署配置,请参照IBM官方安装部署文档。由于不同版本的示例略有不同,这里我们以8版本提供的示例为准。本例中使用GO Sales SSAS cube数据包连接MSAS多维数据集。
如何实施…
1. 新建一个交叉表。
2. 拖拽级别Current Year和Current Month到交叉表的列,级别Organization Code2到交叉表的行,度量Stmt Year到交叉表交集。
3. 运行并测试报表。报表看起来应该如下图。
4. 可以看到一些Organization Code对应的行无数据。这里我们要过滤掉这些空行。先从列中删掉Organization Code2.
5. 拖拽一个Set Expression(对于10版本,此控件已集成到Query Calculation控件中)到列中。
6. 将此计算集命名为Filtered Org,并选择其层级为Organization Dim。
7. 定义其表达式为:
filter([GO Finance Fact].[Organization Dim].[Organization Dim].[Organization Code2], [Stmt Year] is not null).
8. 运行并测试报表。
工作原理…
Report Studio的过滤器(汇总/明细)主要用在关系型数据源和列表中。对基于多维数据集的报表,如果预先在抽取成员的表达式中过滤行或者列,可以获得更好的性能。
本例我们使用了filter函数。此函数允许我们定义过滤的条件。条件可以基于成员属性或者度量值。此例,我们需要抑制空值行,所以我们基于度量过滤(当然,这里我们也可以直接使用工具栏中的数据下的抑制选项)。