如何对子组的聚合求和

How to Sum the aggregates of a child group

这应该很容易,但我卡住了。

我有一个 table 列出了一些关于 Qualifications 的数字——为了实现这个数据集,基本上是每个学生一行的数据集被分组到 Qualification 和 Parent Grouping在 "Measure" 上(这只是一桶资格)。

其中一列正在尝试计算学生人数(嗯,更准确地说,学生人数 具有 特定字段中的值,由另一个字段加权)在每个 Measure/Qualification 中。在下面的屏幕截图中,它是右侧的 "Pred. Avg" 列。

因此对于资格行分组,该列的计算公式为:

=CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual") * Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP")

这很好用 - 最右边一列中的值 35 和 11.5 对于这些行是正确的。第一行应该做的是简单地将其他行中的值相加,得到此度量中的学生人数,在本例中为 46.5。为此,我使用的表达式是:

=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual") * Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP"), "Measure")

然而,正如您在屏幕截图中看到的,这个 returns 2917 代替了。

所以我的问题是;为什么那行不通,而且鉴于它行不通,我如何在父组内汇总子组内的聚合结果?

编辑:

好的,我已确定以下内容正常工作:

=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual"), "Measure")

问题是 returns 11.5 的 Qual 行被加权为 0.5。 IE。它实际上是 returns 23,而 Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP") 是针对返回 0.5 并将其更改为 11.5 的那一行……所以问题就变成了; "how do I force that ...*Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP") into the "Qual" 范围,就像 CountDistinct() 已经在?

这里的问题是您正在尝试使用只有 returns 一个值的查找函数来聚合值。有几种方法可以做到这一点。一种选择是使用 LookupSet 函数来获取适用的权重。一个更好的选择是合并数据集中的数据,以便在不使用查找的情况下获得权重。这样,该函数就可以重新计算任何分组级别,而无需对其施加作用域。此外,CountDistinct 忽略 "Nothing" 因此您可以不使用额外的 IIf 语句。希望对您有所帮助。