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 校验
  • 分析函数
  • 进阶示例
  • 模式识别(CEP)
  • 函数

    • 聚合函数
    • 分析函数
      • 函数列表
        • lag —— 前一个值
        • latest —— 最新非空值
        • had_changed —— 是否发生变化
        • changed_col —— 变化的列值(单列标量)
        • changed_cols —— 多列变化值(动态列)
        • accsum / accmax / accmin / acccount / acc_avg —— 生命周期累积
      • 📚 相关文档
    • 窗口函数
    • 数学函数
    • 字符串函数
    • 类型转换函数
    • 时间日期函数
    • JSON函数
    • 哈希函数
    • 数组函数
    • 类型检查函数
    • 条件函数
    • 多行函数
    • 表达式函数
    • 自定义函数
  • 案例集锦

目录

分析函数

# StreamSQL 分析函数

分析函数在连续事件流上做跨事件的状态计算——如"上一个值"、"是否变化"、"累积求和"。每条事件到达立刻求值,状态跨事件保留;可用在 SELECT 和 WHERE,典型用途是变化检测(CDC)。

可带 OVER ([PARTITION BY ...] [WHEN ...]) 子句控制分区与条件状态,但不能进 HAVING。完整语法、OVER 子句、在窗口查询中的用法见 分析函数详解。

# 函数列表

# lag —— 前一个值

语法: lag(field [, offset [, default [, ignoreNull]]])
描述: 返回当前行之前第 offset 个事件的值(默认 offset=1,不足步数返回 default)。
示例:

SELECT temperature, lag(temperature) AS prev FROM stream
1

# latest —— 最新非空值

语法: latest(field [, default])
描述: 返回指定字段的最新非空值(nil 不更新状态)。
示例:

SELECT latest(temperature) AS lt FROM stream
1

# had_changed —— 是否发生变化

语法: had_changed(ignoreNull, field[, field...])
描述: 与上次相比是否有变化(首次视为变化),返回布尔值;支持多列,"*" 对整行各列检测。
示例:

SELECT ts FROM stream WHERE had_changed(true, status) == true
1

# changed_col —— 变化的列值(单列标量)

语法: changed_col(ignoreNull, field)
描述: 发生变化时返回新值,未变化返回 nil(投影时省略该字段)。
示例:

SELECT changed_col(true, temperature) AS chg FROM stream
1

# changed_cols —— 多列变化值(动态列)

语法: changed_cols(prefix, ignoreNull, field[, field...])
描述: 返回 {prefix+列名: 新值},仅含发生变化的列;可用 "*" 对整行各列检测。仅 SELECT。
示例:

SELECT changed_cols("c_", true, temperature, humidity) FROM stream
1

# acc_sum / acc_max / acc_min / acc_count / acc_avg —— 生命周期累积

语法: acc_sum(field [, startExpr [, resetExpr]])(其余 acc_* 同理)
描述: 跨事件生命周期累积(求和 / 最值 / 计数 / 均值);可选 startExpr / resetExpr 做条件累计与归零。
示例:

SELECT acc_sum(power) AS total_power FROM stream
1

# 📚 相关文档

  • 分析函数详解 - OVER 子句、求值时机、在窗口查询中的用法
  • 聚合函数 - 了解聚合函数的详细用法
  • 窗口函数 - 了解窗口函数的详细用法
  • SQL参考 - 查看完整的SQL语法参考
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/07/11, 12:44:39
聚合函数
窗口函数

← 聚合函数 窗口函数→

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

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