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

Siddhi CEP问题:批量时间窗口中分组事件的字符串值聚合

解决Siddhi批量时间窗口中拼接不同ID的问题

我懂你现在的需求:在30秒的时间批量窗口内,按Target_IP4分组,每个分组输出一个事件,同时把该组里所有不同的id拼接成字符串作为meta_ID。原来的查询没实现这个效果,是因为你直接选择id但没用到合适的聚合函数——Siddhi分组后默认只会返回组内某一个id值,而非所有不同id的拼接结果。

要达成目标,你需要用到Siddhi的字符串聚合函数str:concat_distinct,它专门用来将分组内的不同字符串值拼接成单一字符串,还能自定义分隔符。

修改后的查询语句

from Events#window.timeBatch(30 sec)
select str:concat_distinct(id, ", ") as meta_ID, Target_IP4 as target_ip
group by Target_IP4
insert into temp;

关键细节说明

  • str:concat_distinct(id, ", "):第一个参数是要拼接的字段(这里是id),第二个参数是分隔符(示例用逗号加空格,你可以根据需求改成"|"或其他符号)。这个函数会自动去重,只保留不同的id值再进行拼接。
  • 确保你的Siddhi应用已经导入字符串函数扩展,通常需要在应用开头添加:
    @app:name("YourEventAggregationApp")
    import function str:concat_distinct;
    

举个实际例子:如果30秒窗口内,Target_IP4为192.168.0.1的事件有id=1、id=2、id=1,那么输出的meta_ID会是"1, 2",自动剔除了重复的id,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:09:03