业务对象饼图难题

时间:2016-05-26 16:41:50

标签: report business-intelligence business-objects

由于Business Objects(Launchpad 4.1 SP6)的限制,我需要构建一个饼图。很简单但是我需要使用的数据集包含一个被评估的代码字段,并且根据返回的字符串值,另一个字段被求和(返回代码值描述的给定活动的累计分钟数)。

例如[Code]返回" BRK1"意思是打破并评估到15号(表示15分钟)。另一个[Code]返回" LUNCH"并评估数字60(表示60分钟的午餐)。这些类型的代码返回"减法代码",意味着它们代表从预定工作中减去的时间。在相同的[代码]字段中也是描述工作段的代码。例如:[Code]返回" SB_PHN_SOUTH"指示"移位桶"评估为540分钟。移位桶是"添加代码"。

因此,根据这些业务和程序规则,我有一个如下所示的数据集:

Type I #pass
Type I, #pass
, Type I, #pass
Type II #fail
Type II, #fail
, Type II, #fail

这很容易变成饼图,但有一个主要错误。所有组,BREAK,DISC,MISS,NEUTR和NODISC都是Subractive并且属于分子。代码SHIFT是分母。 SHIFT表示9小时的换档时间,休息时间和从换档时间中减去的时间,因此准确的饼图将显示每个减法桶占整个" SHIFT"的百分比。时间。

我有两个变量可以将值分组到存储桶中以进行评估和求和:

EWFMCodeSelect  EWFMPieChart
BREAK           2425685
DISC            443075
MISS            83476
NEUTR           2700
NODISC          582787
SHIFT           16120299

然后:

=If([Code]InList("BRK1"; "BRK2"; "BRK3"; "LUNCH" )) Then"BREAK"
ElseIf([Code]InList("TEAM"; "MTG"; "PROJ"; "TRNG")) Then "DISC"
ElseIf([Code]InList("LATE";"NOSHOW";"UNPAID";"UPVAC")) Then "MISS"
ElseIf([Code]InList("COACH")) Then "NEUTR"
ElseIf([Code]InList("VAC";"LOA";"SICKUP";"SICKPL")) Then "NODISC"
Else("SHIFT")

我尝试了各种技巧来总结(" SHIFT") - (InList("所有其他代码"))但我得到#MULTIVALUE错误(无论我尝试过的上下文操作符)或其他一些不正确的返回值。

我在这里或其他地方没有发现任何描述类似问题(或解决方案)的帖子,所以我希望这里有一些优秀的Business Objects Webi专家可以提出解决方案的途径。

感谢您的考虑!

1 个答案:

答案 0 :(得分:1)

我建议您使用标准表格表来获取所需的值,然后从那里将其转换为饼图。

根据您的描述,我假设您希望在图表中看到的值为:

EWFMCodeSelect  
BREAK           15.0%
DISC             2.7%
MISS              .5%
NEUTR             .0%
NODISC           3.6%

此功能可以为您提供百分比:

=[TimeDiff] 
/ NoFilter(( Sum([TimeDiff] 
                 ForAll([EWFMCodeSelect]) 
                 Where ([EWFMCodeSelect] = "SHIFT"))))

由于您不想要[SHIFT]的饼图,因此您需要在块上放置一个过滤器以将其排除(公式中的NoFilter()函数会将[SHIFT]重新置于其中评估)