我有一个表T(名称字符串,id字符串),我从流X(名称字符串,id字符串)接收事件。当我收到一个事件时,如果表T中不存在该名称,我想将名称和ID插入表中并将该事件发送到输出流。如果表中存在该名称,则仅当表中的名称与事件中收到的ID匹配时,我才希望将该事件发送到输出流。前-
Table Data
name |id
qwerty |12345
Event 1 = {qwerty,123}
Event 2 = {qwerty,12345}
Event 3 = {asdf,12}
在上述情况下,我想忽略事件1,将event2发送到输出流,并在表中添加event3名称和ID,然后将其发送到输出流。
siddhiql中可能吗?
您可以使用siddhi table joins特别是以名称为条件的左外连接并在此过程中过滤掉其他情况
from XStream left outer join ATable
on XStream.name == ATable.name
select Xstream.name, XStream.id, ATable.name as tableName, ATable.id as tableId
insert into OutputStream;
from Outputstream[tableName is null]
select name, id
insert into ATable;
-- Here if the table name is not null it will be equal to XStream.name based on the first query
from Outputstream[not(tableName is null) and (tableId == id)]
select name, id
insert into FilteredStream;