RuleGo RuleGo
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • 概述
  • 快速开始
  • 核心概念
  • SQL参考
  • API参考
  • RuleGo集成
  • 加入社区讨论
  • Schema 校验
  • 分析函数
  • 进阶示例
  • 模式识别(MATCH_RECOGNIZE / CEP)
  • 函数

  • 案例集锦

    • 案例集锦概述
    • 流表 JOIN 元数据增强
    • 会话窗口与设备在线分析
      • 业务场景
      • SQL
      • 输入
      • 输出
      • 行为说明
      • 📚 相关文档
    • 变更数据捕获案例
    • 滑动窗口与持续检测
    • 数据过滤与转换
    • IoT 温度告警与指标聚合
    • 设备故障模式识别(MATCH_RECOGNIZE)
目录

会话窗口与设备在线分析

# 会话窗口与设备在线分析

# 业务场景

设备的上报往往是"一阵一阵"的:上线后连续上报,停机时沉默。要把每次"在线活动"划分成一个会话——同一设备连续上报(间隔小于超时)归为同一会话,停报超过超时后会话关闭并输出该会话的统计(消息数、最后上报时间)。这类"按活动间隙切分"的需求用会话窗口。

# SQL

SELECT deviceId,
       COUNT(*) AS msgs,
       MAX(ts)  AS last_ts
FROM stream
GROUP BY deviceId, SessionWindow('5s')
1
2
3
4
5

SessionWindow('5s'):同一 deviceId 内,相邻事件间隔小于 5s 的归为同一会话;间隔超过 5s 触发上一个会话关闭并输出。

# 输入

dev-01 在短时间内连发 3 条,然后停报;dev-02 只发 1 条:

{"deviceId": "dev-01", "ts": 1000}
{"deviceId": "dev-01", "ts": 2200}
{"deviceId": "dev-01", "ts": 3000}
{"deviceId": "dev-02", "ts": 1500}
1
2
3
4

(停报 5s 后,会话因超时关闭。)

# 输出

会话关闭时按批回调,每个设备的会话各一行:

{deviceId:dev-01 msgs:3 last_ts:3000}
{deviceId:dev-02 msgs:1 last_ts:1500}
1
2

# 行为说明

  • 会话窗口按活动间隙(gap)切分,没有固定边界:来一条就扩展当前会话,超过 timeout 没新数据就关闭。
  • GROUP BY deviceId, SessionWindow(...):每个设备各自维护会话,互不影响。
  • 会话窗口为处理时间语义(到点靠"超时无数据"触发);想在测试里立刻拿到输出,用 ssql.TriggerWindow() 强制关闭当前会话,不必等满超时。
  • 典型用途:用户/设备在线段、一次操作连续行为、按活动分桶的统计。

如何运行

会话窗口是聚合查询,用 Emit + AddSink 按批接收会话结果。完整样板见如何运行案例 SQL。

# 📚 相关文档

  • 如何运行案例 SQL
  • SQL 参考 —— SessionWindow 语法
  • IoT 温度告警与指标聚合 —— 其它窗口模式
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/07/11, 04:40:00
流表 JOIN 元数据增强
变更数据捕获案例

← 流表 JOIN 元数据增强 变更数据捕获案例→

Theme by Vdoing | Copyright © 2023-2026 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式