您可以执行以下操作:
define stream webvisit (idClient string, idProduct string, chanel string)
from visits[productId =='Fondos’]#window.time(4 days)
select idClient, idProduct, chanel, count(idClient) as visitCount
group by idClient
insert into visits;
from visits[visitCount > 2]
select *
insert into resultStream;
在第二个查询中,我们获取过去4天内每个客户的访问次数,在最后一次查询中,我们使用count> 2过滤这些结果 .
EDIT:
由于您只需要在最后一天内发送通知(假设它定义为:当前时间--24小时),您需要发送通知,您可以尝试以下操作:
define stream webvisit (idClient string, idProduct string, chanel string);
from webvisit[idProduct == 'Fondos']#window.time(4 days)
select idClient, idProduct, chanel, count(idClient) as visitCount
group by idClient insert into visits for current-events;
from visits[visitCount > 2]#window.time(1 day)
select idClient, idProduct, chanel, count(idClient) as hitsForClientPerDay
insert into tempStream;
from tempStream[hitsForClientPerDay < 2]
select idClient, idProduct, chanel, 'your custom message here' as advertisement
insert into advertisementStream;
第二个(1天窗口)查询跟踪在过去24小时内生成了多少警报('hitsForClientPerDay'),最后一个查询仅在该期间内没有任何警报时发出广告(请注意hitsForClientPerDay当事件到来时将为1,因为当前事件也被认为是count(),所以我们将其检查为<2) .