在前一篇博文,我们了解了如何应用分段器,基于成员或成员集,过滤整张报表。本文,我们将一起研究如何添加提示到分段器中,使其为动态。
准备工作…
使用Organization Code 2作为行,Current Year 和 Current Month作为列,Stmt Year作为度量,创建一张简单的交叉表。
如何实施…
1. 打开Query Explorer,展开交叉表所用的查询。
2. 从Insertable Objects窗体中,拖拽一个Set Expression控件到Slicer中。
3. 定义其表达式为:
[GO Finance Fact].[Submission Dim].[Submission Dim].[Submission Currency En]->?SubmissionCcy?.
4. 运行并测试报表。
工作原理…
当我们运行报表,可以发现Cognos自动提示我们选择一个Submission Currency。当我们选择一个Submission Currency之后并提交,报表将和我们的选择项对应的数据推送出来。
此例,我们使用了和前面的博文相同的Slicer对象,但是与前面不同的是,这一次我们可以动态选择用于分段器的成员或者成员集,而不是硬编码一个成员或者成员集。为了实现此功能,我们编辑了一个集表达式:[GO Finance Fact].[Submission Dim].[Submission Dim].[Submission Currency En]->?SubmissionCcy?。表达式的第一部分(指示符->之前的部分),定义了一个层级,表达式的第二部分是一个以??包围的参数名。在运行时,我们从Cognos自动弹出的提示中选择一个成员赋给此参数。
我们哈可以注意到,在运行时,我们只能为此参数选择一个成员。这是因为我们编辑的表达式只能接受一个成员。如果要实现多选,此处我们可以使用set()函数。具体表达式为:
set([GO Finance Fact].[Submission Dim].[Submission Dim].[Submission Currency En]->?SubmissionCcy?).
使用Slicer的一个潜在问题是:Slicer不能像filter一样,可以选择可选还是必须;Slicer永远是必须的。所以,在某些特定的场景下,使用Slicer可能不合适。