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

如何在Hive SQL中计算flag为true时的相邻时间间隔?

Hive SQL相邻时间间隔计算实现方案

问题答复

  • 该需求完全可以通过Hive SQL实现
  • Hive原生支持窗口函数LAG(),可以直接查询同一分区内当前行的前N行数据,完全满足相邻行查询的需求

实现逻辑

  1. 对全表数据按id分区,按timestamp升序排序,用LAG()窗口函数取每条记录同id下前一条记录的timestamp值
  2. 过滤出所有flag为true的记录(flag为false的记录无需输出)
  3. 计算时间间隔:如果当前记录是同id下的第一条记录(前一条timestamp为空),则间隔取9999999,否则用当前timestamp减去前一条timestamp即可

实现SQL

SELECT 
    id,
    CASE 
        WHEN pre_ts IS NULL THEN 9999999
        ELSE `timestamp` - pre_ts 
    END AS `interval`
FROM (
    SELECT 
        id,
        `timestamp`,
        flag,
        LAG(`timestamp`) OVER (PARTITION BY id ORDER BY `timestamp`) AS pre_ts
    FROM records
) t
WHERE flag = true
ORDER BY id, `timestamp`;

结果验证

上述SQL基于你提供的示例数据运行后,输出结果和你给出的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:04