Spotfire 计算的列,其行比率基于条件
Spotfire- calculated column with row ratios based on condition
我无法理解 Spotfire 是否允许在包含在数据组上重复的数字数据的任意行之间进行条件计算。我找不到任何提示我找到正确的解决方案。
上下文(简化):我有来自传感器报告过程状态的数据,这些数据被分组到 bursts/groups 中,代表每次测量需要几分钟。
在每个突发中,传感器正在测量信号,如果检测到预定义特征(信号形状),传感器会输出一些计算值,V 量化该特征并报告发生这种情况的运行时间。
所以本质上我有三列:突发编号、此突发中的一组 RT 以及与这些 RT 关联的值。
我需要添加一个计算列来计算 RT 等于特定数字的行的值比率,比方说 1.89 和 2.76。
高级逻辑是:
如果值存在于 1.89 运行 时间和值存在于 2.76 运行 时间然后计算这些值的比率。对每个 Burst 重复。
我知道我可以使用 OVER 运算符对组重复计算,但我在每个组内都在努力处理逻辑......
任何提示将不胜感激。
非常感谢!
您需要在这里做的第一件事是对您的数据集应用订单。我假设示例数据是完整的,并且包含您的真实数据中的案例,因此,我们创建一个计算列:
RowID() as [ROWID]
完成此操作后,我们可以创建一个计算列,用于计算您在各个组中的比率。请注意,与其他组相比,您的 B4
示例不正确。也就是说,你的分子和分母颠倒了。
If(([RT]=1.89) or ([RT]=2.76),[Value] / Max([Value]) OVER (Intersect([Burst],Previous([ROWID]))))
打破这个...
If(([RT]=1.89) or ([RT]=2.76),
将行限制为 RT = 1.89 or 2.76
所在的行。
- 接下来是如果上述条件为
TRUE
的评估
[Value] / Max([Value]) OVER (Intersect([Burst],Previous([ROWID]))))
这会获取行的值并将其除以 Max([Value])
对 [Burst]
和 AllPrevious([ROWID])
的分组。 Intersect()
函数记录了这一点。因此,分母将始终是分组的 previous 值。请注意,Max()
是一个使用的简单聚合,但在这种情况下应该使用任何聚合,因为我们只需要一个值。所有 Over()
函数都需要并聚合以将结果集限制为单行。
结果
我无法理解 Spotfire 是否允许在包含在数据组上重复的数字数据的任意行之间进行条件计算。我找不到任何提示我找到正确的解决方案。
上下文(简化):我有来自传感器报告过程状态的数据,这些数据被分组到 bursts/groups 中,代表每次测量需要几分钟。 在每个突发中,传感器正在测量信号,如果检测到预定义特征(信号形状),传感器会输出一些计算值,V 量化该特征并报告发生这种情况的运行时间。
所以本质上我有三列:突发编号、此突发中的一组 RT 以及与这些 RT 关联的值。 我需要添加一个计算列来计算 RT 等于特定数字的行的值比率,比方说 1.89 和 2.76。
高级逻辑是:
如果值存在于 1.89 运行 时间和值存在于 2.76 运行 时间然后计算这些值的比率。对每个 Burst 重复。 我知道我可以使用 OVER 运算符对组重复计算,但我在每个组内都在努力处理逻辑...... 任何提示将不胜感激。 非常感谢!
您需要在这里做的第一件事是对您的数据集应用订单。我假设示例数据是完整的,并且包含您的真实数据中的案例,因此,我们创建一个计算列:
RowID() as [ROWID]
完成此操作后,我们可以创建一个计算列,用于计算您在各个组中的比率。请注意,与其他组相比,您的 B4
示例不正确。也就是说,你的分子和分母颠倒了。
If(([RT]=1.89) or ([RT]=2.76),[Value] / Max([Value]) OVER (Intersect([Burst],Previous([ROWID]))))
打破这个...
If(([RT]=1.89) or ([RT]=2.76),
将行限制为RT = 1.89 or 2.76
所在的行。- 接下来是如果上述条件为
TRUE
的评估
[Value] / Max([Value]) OVER (Intersect([Burst],Previous([ROWID]))))
这会获取行的值并将其除以Max([Value])
对[Burst]
和AllPrevious([ROWID])
的分组。Intersect()
函数记录了这一点。因此,分母将始终是分组的 previous 值。请注意,Max()
是一个使用的简单聚合,但在这种情况下应该使用任何聚合,因为我们只需要一个值。所有Over()
函数都需要并聚合以将结果集限制为单行。
结果