由于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专家可以提出解决方案的途径。
感谢您的考虑!
答案 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]
重新置于其中评估)