BusinessObjects Universe 中的正确计数指示器?
Proper count indicator in a BusinessObjects Universe?
如果给定一个人、地点和日期维度,我有以下不真实的事实table(仅用于计算目的)。
personId ; locationId ; dateId
1 ; 1 ; 20160501
1 ; 1 ; 20160503
2 ; 2 ; 20160503
3 ; 2 ; 20160502
我想要不同的人的数量,所以我决定使用这个指标:
指标参数:
Select : count(distinct personId)
函数(在第二个选项卡中):Sum
而且我想在同一份报告中包含一个 table 中每个位置和另一个 table 中每个日期的不同 personId 计数。
这意味着我将有两个不同的计数,每个 table 一个,但是 BO 将只使用一个 SQL 请求,因为两者都在同一个 Webi 文档中。
问题:
BO 生成的 SQL 请求将导致以下结果:
locationId ; dateId ; count(distinct personId)
1 ; 20160501 ; 1
1 ; 20160503 ; 1
2 ; 20160503 ; 1
2 ; 20160502 ; 1
但是,如果像我所说的那样,我希望一方面按位置显示人数,另一方面按日期显示人数,事情就会变得一团糟。
显然,由于我的指标 "Function : Sum",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 indicator 不同?
我并不是说在我的 Webi 报告中使用 =Count([personId],Distinct)
,它确实有效,但实际上有一个指标可以完成这项工作而不会随机求和。
我尝试了一个指标:
Select : personId
函数(来自第二个选项卡):Count
但它不会导致正确的计数不同。
对于这样的聚合,只要维度集发生变化,客户端工具(在本例中为 WebI)无法自行执行重新聚合,您应该使用投影函数 delegated 在你的宇宙中。
摘自信息设计工具用户指南:
If the projection function is Sum, the measure will be summed locally in the report. If the projection function is Delegated, the projection function requests that the aggregation be done in the database instead of aggregating locally.
当您更改报表中的维度时,您会注意到度量的值将替换为 #TOREFRESH
。这意味着 WebI 需要要求后端(在本例中为 RDBMS)根据新的维度集重新计算和重新聚合度量。
平均值是另一种类型的聚合,需要将投影函数设置为 Delegated 以确保计算正确。
如果给定一个人、地点和日期维度,我有以下不真实的事实table(仅用于计算目的)。
personId ; locationId ; dateId
1 ; 1 ; 20160501
1 ; 1 ; 20160503
2 ; 2 ; 20160503
3 ; 2 ; 20160502
我想要不同的人的数量,所以我决定使用这个指标:
指标参数:
Select : count(distinct personId)
函数(在第二个选项卡中):Sum
而且我想在同一份报告中包含一个 table 中每个位置和另一个 table 中每个日期的不同 personId 计数。
这意味着我将有两个不同的计数,每个 table 一个,但是 BO 将只使用一个 SQL 请求,因为两者都在同一个 Webi 文档中。
问题:
BO 生成的 SQL 请求将导致以下结果:
locationId ; dateId ; count(distinct personId)
1 ; 20160501 ; 1
1 ; 20160503 ; 1
2 ; 20160503 ; 1
2 ; 20160502 ; 1
但是,如果像我所说的那样,我希望一方面按位置显示人数,另一方面按日期显示人数,事情就会变得一团糟。
显然,由于我的指标 "Function : Sum",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 indicator 不同?
我并不是说在我的 Webi 报告中使用 =Count([personId],Distinct)
,它确实有效,但实际上有一个指标可以完成这项工作而不会随机求和。
我尝试了一个指标:
Select : personId
函数(来自第二个选项卡):Count
但它不会导致正确的计数不同。
对于这样的聚合,只要维度集发生变化,客户端工具(在本例中为 WebI)无法自行执行重新聚合,您应该使用投影函数 delegated 在你的宇宙中。
摘自信息设计工具用户指南:
If the projection function is Sum, the measure will be summed locally in the report. If the projection function is Delegated, the projection function requests that the aggregation be done in the database instead of aggregating locally.
当您更改报表中的维度时,您会注意到度量的值将替换为 #TOREFRESH
。这意味着 WebI 需要要求后端(在本例中为 RDBMS)根据新的维度集重新计算和重新聚合度量。
平均值是另一种类型的聚合,需要将投影函数设置为 Delegated 以确保计算正确。