• 【SAP BO】【WEBI】【转】Webi实现动态选择度量


    我们都知道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创建一个输入控件,并选择复选框作为输入控件类型。

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

  • 相关阅读:
    跨域访问(nginx)
    mybatis中<set>标签和<trim prefix="set" suffixOverrides=",">
    如何在Oracle中复制表结构和表数据
    Oracle删除重复数据
    Oracle中删除表
    Oracle中on和where的区别
    Java实体类中的类型对应mybatis的jdbcType
    Java 枚举(enum) 常见用法
    关于JS 事件冒泡和onclick,click,on()事件触发顺序
    浅析 SpringMVC 的@PathVariable 和 @RequestParam 和 @RequestBody注解
  • 原文地址:https://www.cnblogs.com/uzipi/p/3447788.html
Copyright © 2020-2023  润新知