WSO2 DAS SiddhiQL:初始化一个事件表并在之后更新它

WSO2 DAS SiddhiQL:初始化一个事件表并在之后更新它,wso2,complex-event-processing,wso2-das,siddhi,Wso2,Complex Event Processing,Wso2 Das,Siddhi,我有一些相关的问题: 首先,我想用默认值和100行初始化一个事件表,如下图所示: 第二,一旦初始化完成,我想更新这个表。查询1执行完成后,如何在同一执行计划中执行查询2 最后,我有一个具有“高度”属性的事件。在我的执行计划中,对于每个事件,我希望在num列小于alitude的事件表的每一行中增加count1。我试过了,但并没有增加所有行的计数 FROM inputStream JOIN counterTable SELECT count1+1 as count1, altitude as tem

我有一些相关的问题:

首先,我想用默认值和100行初始化一个事件表,如下图所示: 第二,一旦初始化完成,我想更新这个表。查询1执行完成后,如何在同一执行计划中执行查询2

最后,我有一个具有“高度”属性的事件。在我的执行计划中,对于每个事件,我希望在num列小于alitude的事件表的每一行中增加count1。我试过了,但并没有增加所有行的计数

FROM inputStream JOIN counterTable
SELECT count1+1 as count1, altitude as tempNum
update counterTable on counterTable.count1 < tempNum;

FROM inputStream JOIN counterTable
SELECT counterTable.num as theAltitude, counterTable.count1 as countAltitude
INSERT INTO outputStream;
如果希望在每次部署执行计划时进行初始化,则应使用内存中的事件表,如下所示。否则,您只需使用已初始化的

查询将按其定义的顺序运行,但该过程将针对每个事件而不是批次进行,即如果有两个查询使用inputStream,当事件1进入inputStream时,它将转到查询1,然后转到查询2,然后仅使用事件2

参考下面的片段

/* Define the trigger to be used with initialization */
define trigger triggerStream at 'start';

/* Define streams */
define stream inputStream (altitude int);
define stream outputStream (theAltitude long, countAltitude int);

/* Define table */
define table counterTable (num long, count1 int, count2 int, tempNum int);

/* Iterate and generate 100 events */
from triggerStream[count() < 100]
insert into triggerStream;

/* Using above 100 events, initialize the event table */
from triggerStream
select count() as num, 0 as count1, 0 as count2, 0 as tempNum
insert into counterTable;

/* Perform the update logic here */
from inputStream as i join counterTable as c
    on c.count1 < i.altitude
select c.num, (c.count1 + 1) as count1, c.count2, altitude as tempNum
insert into updateStream;

from updateStream
insert overwrite counterTable
    on counterTable.num == num;

/* Join the table and get the updated results */
from inputStream join counterTable as c
select c.num as theAltitude, c.count1 as countAltitude
insert into outputStream;

表值可以按如下方式初始化

@info(name='initialize table values')
from inputStream[count()==1]
select 1 as id, 0 as counter1, 0 as counter2, 0 as counter3
insert into counterTable;

我还有一个问题,我可以只将最后一个事件的计数器表的最后一次更新插入outputStream,因为目前每个事件有100行,所以我的持久数据流中有大量数据。提前谢谢。我最终通过在“插入到我的outputStream;”之前使用“output last X events”修复了我的问题在最后一个查询中。