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

如何在Spotfire中按重复值分组列并标记连续0的专属组别?

在Spotfire中识别连续0组并提取最后一组数据的实现方法

先明确你的需求场景:
你有列A的数据如下:

------ | A | 
------ | 11 | 
------ | 0 | 
------ | 0 | 
------ | 5 | 
------ | 0 | 
------ | 0 | 
------ | 2 | 
------ 

想要生成列B来唯一标记每组连续的0,得到这样的结果:

------------ | A | B | 
------------ | 11 | null| 
------------ | 0 | 1 | 
------------ | 0 | 1 | 
------------ | 5 | null| 
------------ | 0 | 2 | 
------------ | 0 | 2 | 
------------ | 2 | null| 
------------ 

最终目的是提取最后一组连续0(也就是示例里的组别2)的数据,这个在Spotfire里完全可以做到,下面是具体步骤:

第一步:生成标记连续0组的列B

我们需要通过几个计算列逐步实现:

  1. 创建辅助列IsZero:用来标记当前行是否为0
    打开添加列→计算列,输入公式:

    If([A] = 0, 1, 0)
    

    这样0会被标记为1,非0值标记为0。

  2. 创建辅助列GroupStart:用来标记新的连续0组的起始行
    同样添加计算列,用Lag函数对比上一行的IsZero值:

    If([IsZero] = 1 and Lag([IsZero]) Over (Order By [RowID]) = 0, 1, 0)
    

    注意:如果你的数据没有行顺序标识,先添加一个RowID列(通过添加列→行ID生成),确保数据按你需要的顺序处理。

  3. 生成最终的列B:通过累计求和给每个连续0组分配唯一ID
    添加计算列,公式如下:

    If([IsZero] = 1, Sum([GroupStart]) Over (Order By [RowID] Rows Between Unbounded Preceding And Current Row), Null)
    

    这样非0行显示Null,每组连续0会得到唯一的数字编号,和你期望的结果完全一致。

第二步:提取最后一组连续0的数据

有了列B之后,提取最后一组就很简单了:

  1. 获取最大的分组ID:添加一个计算列MaxGroupID,公式:

    Max([B]) Over ()
    

    这个列会返回所有分组里的最大编号,也就是最后一组的ID。

  2. 筛选目标数据:设置筛选条件为[B] = [MaxGroupID],就能精准筛选出最后一组连续0的所有行。
    如果你不想额外加列,也可以直接在筛选器里选择列B的最大值,但用计算列的方式更适合数据自动更新的场景,不用每次手动调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:20