我在通过查询消化我的小组的结果时遇到了麻烦。我的名为intermediateStream
的源流有数据
ts uid id_resp_h
2016-05-08 08:59 CLuCgz3HHzG7LpLwH9 172.30.26.119
2016-05-08 09:00 C3WnnK3TgUf2cSzxVa 172.30.26.127
2016-05-08 09:00 C3WnnK3TgUf2cSzxff 172.30.26.119
SIDDHI查询
from intermediateStream
select ts, count(ts) as ssh_logins
group by ts
insert into SSHOutStream;
我期待输出像
ts ssh_logins
2016-05-08 08:59 1
2016-05-08 09:00 2
但它会返回
ts ssh_logins
2016-05-08 08:59 1
2016-05-08 09:00 1
2016-05-08 09:00 2
有什么建议吗?
答案 0 :(得分:1)
Siddhi在他们到达时实时处理事件。因此,在给定的场景中,对于第二个输入,您得到count = 1,因为这是到目前为止已经到达的那个中ts = 2016-05-08 09:00的唯一事件。当第3个事件到来时,你得到count = 2,因为前一个事件也有相同的ts值 要获得所需的答案,请使用时间批处理窗口,该窗口允许您在输出之前等到指定的时间过去 (即来自intermediateStream#window.timeBatch(1分钟))