我试图在wso2的CEP中编写执行计划。但是如果我使用聚合函数,我会在select子句中收到错误。就我而言,它是"总和"。请阅读以下内容以获取更多详细信息:
@Export('stream.sla.consolidated.breach:1.0.0')
define stream ConsolidatedBreachSLA (breach_date string, breach_count_per_day int,request_id int);
@Export('stream.sla.breach.details:1.0.0')
define stream BreachSLA (request_id int, breach_date string, breach_flag int);
from BreachSLA#window.length(50)
select breach_date as breach_date,sum(breach_flag) as breach_count_per_day,request_id
group by breach_date
having breach_count_per_day > 2
insert into ConsolidatedBreachSLA;
但是一旦我删除"总和"从select子句看,一切似乎都得到了正确的验证。
from BreachSLA#window.length(50)
select breach_date as breach_date,breach_flag as breach_count_per_day,request_id
group by breach_date
having sum(breach_count_per_day) > 2
insert into ConsolidatedBreachSLA;
目的是获取select子句中的记录总和,以便将总和的值导出到发布者。
答案 0 :(得分:1)
sum function returns a long value(对于int或long输入),而您的属性' breach_flag'被定义为int。似乎流已经为此定义了一个int属性,因此发生了这种冲突,您需要修改已定义的流(ConsolidatedBreachSLA和任何后续流)属性类型(即breach_count_per_day的类型)到'长'得到这笔钱。
答案 1 :(得分:1)
拉杰夫对冲突是正确的。
我正在尝试与此问题不同的事情,我尝试了"转换"功能,它帮助。
所以我将我的Siddhi查询改为
来自BreachSLA#window.length(50) 选择breach_date,转换(sum(breach_flag),' int')作为breach_count_per_day 由breach_date组成 有breach_count_per_day> 2 插入BreachCountDay;