0

我在通过查询消化我的组的结果时遇到了麻烦。我的源流名为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    

有什么建议么?

4

1 回答 1

1

Siddhi 在事件到达时实时处理事件。因此,在给定的场景中,第二个输入的 count = 1 因为这是迄今为止到达的事件中唯一一个 ts=2016-05-08 09:00 的事件。当第三个事件到达时,您会得到 count=2,因为前一个事件也具有相同的 ts 值。
要获得所需的答案,请使用时间批处理窗口,它允许您等到指定的时间过去后再给出输出。
(即来自intermediateStream#window.timeBatch(1 min))

于 2016-06-22T12:02:46.280 回答