如果给定一个人,位置和日期维度,我有以下无事实的事实表(仅用于计数目的)。
personId ; locationId ; dateId
1 ; 1 ; 20160501
1 ; 1 ; 20160503
2 ; 2 ; 20160503
3 ; 2 ; 20160502
我想拥有不同人数,所以我决定使用这个指标:
指标参数:
选择:count(distinct personId)
功能(在第二个标签中):Sum
我希望在同一份报告中,在一个表格中每个位置的personId和另一个表格中的每个日期的明确计数。
这意味着我将有两个不同的计数,每个表一个,但BO将只使用一个SQL请求,因为它们都在同一个Webi文档中。
问题:
BO生成的SQL请求将产生以下结果:
locationId ; dateId ; count(distinct personId)
1 ; 20160501 ; 1
1 ; 20160503 ; 1
2 ; 20160503 ; 1
2 ; 20160502 ; 1
但是,如果像我说的那样,我希望一方的位置和另一方面的日期的人数开始变得混乱。
显然,因为"功能:总和"在我的指标中,BO将使用上面更精细计数的不同结果的总和,而不是使正确的计数不同。
因此,我会得到以下结果:
locationId ; count(distinct personId)
1 ; 2
2 ; 1
2 ; 1
而不是为位置1设置1个不同的人 并且
dateId ; count(distinct personId)
20160501 ; 1
20160503 ; 2
20160502 ; 1
而不是20160503年的不同人。
问题
是否有另一种方法可以在BusinessObjects Universe中生成一个正确的Count distinct 指示符?
我并不是指在我的Webi报告中使用=Count([personId],Distinct)
,这有效,但实际上有一个指标可以完成工作,而不会随机总结。
我尝试了一个指标:
选择:personId
功能(来自第二个标签):Count
但它并没有导致适当的计数不同。
答案 0 :(得分:0)
对于这样的聚合,客户端工具(本例中为WebI)在维度更改时无法执行重新聚合,您应该在Universe中使用投影函数委派。
取自信息设计工具用户指南:
如果投影函数是 Sum ,则度量将在报表中本地求和。如果投影函数是委托,则投影函数请求在数据库中完成聚合,而不是在本地聚合。
当您更改报告中的维度时,您会注意到该度量的值将替换为#TOREFRESH
。这意味着WebI需要请求后端(在这种情况下为RDBMS)根据新的维度集重新计算和重新聚合度量。
平均值是另一种类型的聚合,需要将投影功能设置为委派,以确保正确的计算。