You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Spotfire中基于其他列下一行值创建计算列

在Spotfire中生成desired_B和desired_C列的正确方法

根据你给出的预期输出,以下是针对两列的正确计算逻辑:

1. 生成desired_B列

desired_B需要获取同一patient_ID分组内,当前行的下一行column_A值,最后一行显示NA。使用Lead窗口函数即可实现,无需复杂的Intersect嵌套:

Lead([column_A]) over (Partition By [patient_ID] Order By [Rank])

2. 生成desired_C列

desired_C是当前行column_A与上一行column_A的拼接字符串(格式为当前值-上一行值),第一行显示NA。这里使用Lag窗口函数获取上一行的值,再做字符串拼接:

If(Rank([Rank]) over (Partition By [patient_ID] Order By [Rank]) = 1, 
   Null(), 
   [column_A] || "-" || Lag([column_A]) over (Partition By [patient_ID] Order By [Rank])
)

原代码问题说明

你之前使用的Last([column_A]) over (Intersect([patient_ID],Next([Rank])))逻辑错误:

  • Next([Rank])会返回当前行Rank的下一个数值,但Intersect无法正确关联分组与排序的窗口范围;
  • 这类跨行取值场景,Spotfire推荐直接使用Lead(取下一行)和Lag(取上一行)函数,配合Partition By分组、Order By排序,逻辑更清晰且不易出错。

内容的提问来源于stack exchange,提问作者Irma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:09:57