本文将介绍如何在 Tibco Spotfire 中创建基于条件的计算列,以实现对特定项目下满足条件的 FTE_Nov 值进行求和,并将结果应用于该项目下的所有资源名称。我们将利用 Spotfire 的计算列功能和 OVER 函数,实现高效且准确的条件求和。
创建计算列的步骤
在 Tibco Spotfire 中,我们可以使用计算列功能来创建基于条件的汇总数据。以下步骤详细说明了如何基于 “Count_SAM” 等于 1 的条件,计算 “FTE_Nov” 的总和,并将其应用于相同项目代码下的所有资源名称。
-
打开 Spotfire 分析文件: 首先,确保您已加载包含 “FTE_Nov”、”Count_SAM” 和 “Project” 列的数据表。
-
创建计算列: 在 Spotfire 菜单中,选择 “插入” -> “计算列”。这将打开计算列对话框。
-
输入表达式: 在计算列对话框中,输入以下表达式:
Sum([FTE_Nov] * [Count_SAM]) OVER ([Project])
- Sum([FTE_Nov] * [Count_SAM]): 这部分表达式首先将 “FTE_Nov” 乘以 “Count_SAM”。 由于 “Count_SAM” 的值为 0 或 1,因此只有当 “Count_SAM” 等于 1 时,”FTE_Nov” 的值才会被保留,否则会被置为 0。
- OVER ([Project]): OVER 函数指定了计算的范围。 在这里,我们指定按 “Project” 列进行分组。这意味着对于每个唯一的 “Project” 值,都会计算 “FTE_Nov * Count_SAM” 的总和。
-
命名计算列: 为计算列指定一个有意义的名称,例如 “总 FTE (Count_SAM = 1)”。
-
选择数据类型: 确保选择合适的数据类型,通常为 “Real” 或 “Decimal”,具体取决于 “FTE_Nov” 列的数据类型。
-
确认并应用: 点击 “确定” 按钮,Spotfire 将创建新的计算列。
示例说明
假设我们有如下数据(简化版):
Project | Resource Name | FTE_Nov | Count_SAM |
---|---|---|---|
ProjectA | Resource1 | 0.3 | 1 |
ProjectA | Resource2 | 0.6 | 0 |
ProjectA | Resource3 | 0.0 | 1 |
ProjectB | Resource4 | 0.2 | 1 |
ProjectB | Resource5 | 0.0 | 0 |
应用上述计算列后,结果如下:
Project | Resource Name | FTE_Nov | Count_SAM | 总 FTE (Count_SAM = 1) |
---|---|---|---|---|
ProjectA | Resource1 | 0.3 | 1 | 0.3 + 0.0 = 0.3 |
ProjectA | Resource2 | 0.6 | 0 | 0.3 + 0.0 = 0.3 |
ProjectA | Resource3 | 0.0 | 1 | 0.3 + 0.0 = 0.3 |
ProjectB | Resource4 | 0.2 | 1 | 0.2 |
ProjectB | Resource5 | 0.0 | 0 | 0.2 |
可以看到,对于 ProjectA,只有 Resource1 和 Resource3 的 Count_SAM 为 1,它们的 FTE_Nov 分别为 0.3 和 0.0,因此总和为 0.3。 ProjectB 只有 Resource4 的 Count_SAM 为 1,FTE_Nov 为 0.2,所以总和为 0.2。
注意事项
- 数据类型一致性: 确保 “FTE_Nov” 和 “Count_SAM” 列的数据类型正确,以便进行数值计算。
- OVER 函数的灵活性: OVER 函数可以根据需要进行扩展,例如可以按多个列进行分组,或者使用不同的聚合函数。
- NULL 值处理: 如果 “FTE_Nov” 或 “Count_SAM” 列中包含 NULL 值,需要考虑如何处理这些值。可以使用 If(IsNotNull([Column]), [Column], 0) 来将 NULL 值替换为 0。
总结
通过使用 Spotfire 的计算列和 OVER 函数,我们可以轻松地创建基于条件的汇总数据,并将结果应用于相关的数据行。 这种方法可以有效地分析和可视化复杂的数据集,并从中提取有价值的见解。 请务必根据您的具体需求调整表达式,以获得最佳结果。
评论(已关闭)
评论已关闭