BusinessObjects Universe中的正确计数指示符?

时间:2016-05-04 07:06:03

标签: business-intelligence business-objects

如果给定一个人,位置和日期维度,我有以下无事实的事实表(仅用于计数目的)。

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
但它并没有导致适当的计数不同。

1 个答案:

答案 0 :(得分:0)

对于这样的聚合,客户端工具(本例中为WebI)在维度更改时无法执行重新聚合,您应该在Universe中使用投影函数委派

取自信息设计工具用户指南

  

如果投影函数是 Sum ,则度量将在报表中本地求和。如果投影函数是委托,则投影函数请求在数据库中完成聚合,而不是在本地聚合。

当您更改报告中的维度时,您会注意到该度量的值将替换为#TOREFRESH。这意味着WebI需要请求后端(在这种情况下为RDBMS)根据新的维度集重新计算和重新聚合度量。

平均值是另一种类型的聚合,需要将投影功能设置为委派,以确保正确的计算。