【问题标题】:Sum Over unique identifier in SpotfireSpotfire 中的对唯一标识符求和
【发布时间】:2025-12-14 19:50:01
【问题描述】:

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

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

或者,因为我真的很想最终通过 Condition 来总结这些数据,所以我只显示上面的数据,而不是 [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 是记录的标识符。

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

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

但这在某种程度上不是一个有效的表达式。我哪里错了?

对于我的条形图,我希望将 Condition 作为类别轴,将 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 值。如果我过滤掉 Condition "I"(第一行中的那个),现在 Enrollment 值为零!

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

【问题讨论】:

  • 在 7.0 之前的版本中不允许嵌套聚合。您使用的是 7.0 或 7.5 以外的版本吗?

标签: bar-chart spotfire


【解决方案1】:

评论太长了……

你能提供一些预期的结果吗?看起来好像每个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

【讨论】:

  • 所以我认为这些都可以在交叉表中很好地工作,但都不适用于我的条形图。即使我添加了一个聚合(例如Sum(First([Enrollment]) OVER ([CT_ID]))),它仍然说它无效。
  • 我还在帖子中添加了更多细节,希望有助于更好地解释我的最终目标。