cep java_使用两次窗口查询Siddhi CEP

这篇博客讨论了一种实时监控客户访问行为的方法,特别是针对产品'Fondos'的访问。首先,通过4天的时间窗口计算每个客户的访问次数,并将结果存储。接着,筛选出访问次数超过2次的客户,进一步在一个小时内跟踪这些客户,如果在此期间没有触发超过两次的访问,系统会发送定制的广告通知。
摘要由CSDN通过智能技术生成

您可以执行以下操作:

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) .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值