求助:如何在Webi Business Objects交叉表中按团队、角色构建计数度量
解决方案
问题1:按团队+职位角色统计员工总数
直接使用带Distinct的计数公式即可——因为你的交叉表已经把[Team]和[Role Type]设为行维度,报表会自动按这两个维度分组计算对应人数:
=Count([Staff Number]; Distinct)
如果是在非交叉表场景需要强制指定上下文,用下面的公式:
=Count([Staff Number]; Distinct) ForEach([Team]; [Role Type])
你之前的公式出错是因为ForEach([Team] In([Role Type]))的语法逻辑混乱,In用来限定上下文范围,这里不需要嵌套,直接同时指定两个维度就行。
问题2:按团队+职位角色+员工类型统计永久/临时员工数
方法1:用Sum替代Count(更简洁)
保留你现有的Permanent staff indicator变量:
=If([Contract Type]="Permanent") Then 1 Else 0
然后永久员工计数用Sum计算(Indicator每行是1或0,Sum直接得到符合条件的人数):
=Sum([Permanent staff indicator]; Distinct)
嫌麻烦的话可以一步到位,去掉Indicator:
=Sum(If([Contract Type]="Permanent") Then 1 Else 0; Distinct)
方法2:修正Count+Where的上下文逻辑
如果坚持用Count,删掉多余的ForEach([Staff Number]) In([Team];[Role Type])——Where子句会自动结合报表的行/列维度(Team、Role Type、员工类型)计算,正确公式:
=Count([Staff Number]; Distinct) Where([Contract Type]="Permanent")
临时员工计数只需要把条件改成[Contract Type]="Temporary":
=Count([Staff Number]; Distinct) Where([Contract Type]="Temporary")
之前的#CONTEXT错误是因为你错误嵌套了上下文函数,ForEach([Staff Number])破坏了原本的分组上下文,导致系统无法识别正确的计算范围。
内容的提问来源于stack exchange,提问作者badger1234
相关产品推荐
相关产品推荐

