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)
目录

数据过滤与转换

# 数据过滤与转换

# 业务场景

最常见的一类需求是逐条处理——每来一条读数就过滤、换算、分级,一进一出同步返回,不涉及窗口聚合。比如:丢弃明显异常的读数(温度越界)、把摄氏换算成华氏、按温度分级标注(正常/预警/报警)。这类需求用非聚合模式的 EmitSync,调用方直接拿到单条结果。

# SQL

SELECT deviceId,
       temperature,
       temperature * 1.8 + 32           AS temp_f,
       CASE WHEN temperature > 35 THEN 'CRITICAL'
            WHEN temperature > 30 THEN 'WARNING'
            ELSE 'OK' END               AS level
FROM stream
WHERE temperature > 0 AND temperature < 100
1
2
3
4
5
6
7
8

# 输入

{"deviceId": "dev-01", "temperature": 28.0}
{"deviceId": "dev-02", "temperature": 32.0}
{"deviceId": "dev-03", "temperature": 38.0}
{"deviceId": "dev-04", "temperature": 999.0}
{"deviceId": "dev-05", "temperature": null}
1
2
3
4
5

# 输出

EmitSync 逐条同步返回;不命中 WHERE 的行返回 nil(不是错误):

{deviceId:dev-01 temperature:28   temp_f:82.4  level:OK}
{deviceId:dev-02 temperature:32   temp_f:89.6  level:WARNING}
{deviceId:dev-03 temperature:38   temp_f:100.4 level:CRITICAL}
[filtered] dev-04   // 999 越界,被 BETWEEN 拦掉
[filtered] dev-05   // null,被 IS NOT NULL 拦掉
1
2
3
4
5

# 行为说明

  • EmitSync 只用于非聚合查询(无 GROUP BY/窗口);对聚合查询调用会报错 synchronous mode only supports non-aggregation queries。
  • WHERE 过滤原始行:不满足条件的行返回 nil,可据此区分"被过滤"和"出错"。要在聚合后再过滤用 HAVING(见滑动窗口与持续检测)。
  • 算术与别名:temperature * 1.8 + 32 AS temp_f 直接写表达式并起别名,无需注册 UDF。
  • CASE WHEN:做分级标注/条件赋值;WHERE 支持比较(>、<、=)、AND/OR 组合多条件。

如何运行

非聚合查询用 EmitSync(data) 同步拿单条结果,无需 AddSink。完整样板见如何运行案例 SQL。

# 📚 相关文档

  • 如何运行案例 SQL
  • SQL 参考 —— WHERE、表达式、CASE
  • IoT 温度告警与指标聚合 —— 从单点转换升级到窗口聚合
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/07/11, 04:40:00
滑动窗口与持续检测
IoT 温度告警与指标聚合

← 滑动窗口与持续检测 IoT 温度告警与指标聚合→

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

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