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

如何在Tibco Spotfire中对时间序列数据按30分钟间隔下采样并取最近00/30分对应值?

在Tibco Spotfire中实现30分钟间隔的时间序列下采样(取最接近00/30分的数据)

需求说明

将时间序列数据下采样至30分钟间隔,每个间隔仅保留最接近00分或30分时间戳的对应数据行。

输入数据

ID  DateTime            Value
-----------------------------
ID1 2022-06-06 19:01:34Z 100
ID1 2022-06-06 19:06:31Z 200
ID1 2022-06-06 19:11:34Z 300
ID1 2022-06-06 19:16:31Z 400
ID1 2022-06-06 19:21:32Z 500
ID1 2022-06-06 19:26:33Z 600
ID1 2022-06-06 19:31:32Z 700

期望输出

ID  DateTime            Value
-----------------------------
ID1 2022-06-06 19:00:00Z 100
ID1 2022-06-06 19:30:00Z 700

实现步骤

  1. 创建间隔起始计算列
    添加计算列IntervalStart,公式:

    Floor([DateTime] to minute) - Minute([DateTime])%30 * Minute(1)
    

    该公式会将每个时间戳映射到所属的30分钟间隔起始点(00分或30分),例如19:01:34会被映射为19:00:00,19:31:32映射为19:30:00。

  2. 计算时间差绝对值
    添加计算列TimeDiff,公式:

    Abs(Seconds([DateTime] - [IntervalStart]))
    

    用于衡量每个数据点与对应间隔起始点的时间距离。

  3. 筛选最接近的记录
    添加计算列RankWithinInterval,公式:

    Rank([TimeDiff],"asc",[ID],[IntervalStart])
    

    该列会在每个ID和间隔内,按时间差从小到大排序,最小差值的记录排名为1。

  4. 过滤结果
    在数据筛选器中设置RankWithinInterval = 1,即可得到每个30分钟间隔内最接近00/30分的记录。

替代方法(分组关联)

如果不想用排名列,也可以通过分组+关联实现:

  • 使用分组依据工具,按ID和IntervalStart分组,计算Min([TimeDiff])得到每个间隔的最小时间差;
  • 将分组结果与原数据表关联(关联条件为ID、IntervalStart、TimeDiff),即可提取对应的数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:45:43