Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

最近在一篇博客文章上看到可以在webi报表中动态的选择度量,很好用,先把博客的文章记录下来,留待后用!

这篇文章之前发在sdn的英文blog,现译成中文并发在中文的企业blog,供参考。

原文及相关评论请见http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/20426

我们都知道Web Intelligence具有高级的分析功能,是一个非常灵活的报表工具。在这篇文章里,我会演示一个使用Webi实现动态选择度量对象的方案。首先解释一下什么是”动态选择度量”:例如我们有多个度量对象,包括销售数量,销售收入,折扣数量,目标销售输入等,用户想动态的选择哪些度量在报表上显示,哪些不显示。这个业务需求的背景是,有些报表的度量太多,比如今年销售金额,去年销售金额,增长额,增长率等等,如果报表显示所有度量,那么报表也许会看起来太臃肿且不方便使用。所以用户想选择性的查看他关注的那几个度量。

通过Webi强大的交互功能,用户可以拖拽维度和设定格式,但对于那些连Excel都不太会的用户,我们需要更简单的交互方式。所以我们创建一个简单的格式化报表,通过简单的交互界面,复选框,来选择你想要看到的维度。下面是报表的的示例,用户通过在左边的面板中选择维度,右面的报表区域中的维度会相应的隐藏或显示

e69caae591bde5908d

使用了如下技术来实现以上效果:
1.         Webi交叉表
2.         Webi输入控件(XI 3.1 SP2之后的新功能)
3.         Universe 派生表
通过以下简单的步骤可以完成上面的示例报表:
1.         通过eFashion的连接建立一个简单的universe,添加一个”measure_names”的派生表,SQL语句如下:
select distinct ‘Sales Revenue’ as mname from outlet_lookup
union
select distinct ‘Sales Quantity’ from outlet_lookup
union
select distinct ‘Margin’ from outlet_lookup
2. 基于派生表中唯一的那个字段,创建一个维度对象,universe结构如下所示:
e69caae591bde5908d1
3.使用此universe创建一个webi报表,使用如下对象:State,Measure Name,Margin,Sales Revenue和Sales Quantity。注意universe中的派生表并没有和其他表进行连接,因此此查询将会产生一个笛卡尔积的结果,这正是我们所需要的。
4. 查询结果如下:
e69caae591bde5908d2
5.         创建一个报表变量”Measure Value”定义如下:、
=If([Measure Name]=”Margin”) Then [Margin] ElseIf([Measure Name]=”Sales Quantity”) Then [Sales Quantity] Else [Sales Revenue]
6.         创建一个交叉表,把state对象作为行,Measure Name作为列,并将变量Measure Value放入单元格中。
7.         基于Measure Name创建一个输入控件,并选择复选框作为输入控件类型。

大功告成!现在你可以通过更为直观的界面来选择这些度量的显示,而不再需要拖拽。对于生产环境,可以把派生表换成物理表以提高效率。