Sum Over在Spotfire中的唯一标识符



我正在尝试创建一个条形图,汇总字段中的值,但仅用于每个唯一标识符。例如,对于我的数据:

Condition   CT_ID   Enrollment  Company
I           5127    24          H
J           5127    24          H
P           5127    24          H
I           5127    24          O
J           5127    24          O
P           5127    24          O
L           27668   387         C
R           27668   387         C
D           38190   650         D
Q           38190   650         D
F           38785   30          A
E           39682   30          B
M           41818   17          I
O           44093   188         G
A           54850   18          K
G           59183               F
C           59891   266         J
G           61142   48          F
H           61425   28          L
K           61449               N
A           61793   12          E
N           61793   12          E
B           61910   120         M
B           61917   120         M
B           61961   130         M

或者,由于我确实想最终按条件总结这些数据,所以让我只显示按条件而不是[CT_ID]得出的上述数据。

Condition   CT_ID   Enrollment  Company
A           54850   18          K
A           61793   12          E
B           61910   120         M
B           61917   120         M
B           61961   130         M
C           59891   266         J
D           38190   650         D
E           39682   30          B
F           38785   30          A
G           59183               F
G           61142   48          F
H           61425   28          L
I           5127    24          H
I           5127    24          O
J           5127    24          H
J           5127    24          O
K           61449               N
L           27668   387         C
M           41818   17          I
N           61793   12          E
O           44093   188         G
P           5127    24          H
P           5127    24          O
Q           38190   650         D
R           27668   387         C

这些行被Condition和Company中的不同值所重复。CT_ID是记录的标识符。

我想总结一下我的招生专栏,但我会多算的。所以我想我可以创建一个自定义表达式:

Sum(Avg([Enrollment]) OVER ([CT_ID]))

但这不是一个有效的表达式。我哪里做错了?

对于我的条形图,我想让Condition作为类别轴,Enrollment作为值轴。下表显示了如何计算Enrollment值。关注条件P、I和j

Condition  Enrollment
A          30
B          370
C          266
D          650
E          30
F          30
G          48
H          28
I          24
J          24
K   
L          387
M          17
N          12
O          188
P          24
Q          650
R          387

我目前的解决方案使用排名函数,并且只将每个唯一的CT_ID的注册信息放在第一行,但是当我开始过滤数据时,这是完全错误的。例如,假设在上面的数据集中,CT_ID 5127的第一行只有一个Enrollment值。如果我过滤掉条件"I"(第一行中的条件),那么现在Enrollment值为零!

如果您能提供任何帮助,我将不胜感激!我不是OVER表达式的专家,所以希望有一个简单的解决方案!

注释太长了…

你能提供一些预期的结果吗?看起来好像每个CT_ID只能有一个值,所以它们中的SUM可以是任意一个值…对吧?如果不是,是什么决定了重复?

这里是你如何完成你在上面的代码中尝试的——但是从你的测试数据不仅仅是要给你Enrollment的值,因为每个CT_ID似乎只有一个值(重复)。

Sum([Enrollment]) over ([CT_ID]) / Count() OVER ([CT_ID])

你也可以直接用First()

First([Enrollment]) OVER ([CT_ID])

编辑

因为你有有些重复,有些没有…我们把重复数分成重复数的平均值。插入计算列:

Max([Enrollment]) over (Intersect([CT_ID],[Condition])) / Count([Enrollment]) over (Intersect([CT_ID],[Condition]))

然后在您想要忽略重复项的任何表达式中使用此列来代替Enrollment,其中重复项是相同的Condition, CT_ID, and Enrollment值。

例如

Condition = P and CT_ID = 5127的行将有12而不是24

最新更新