表上的SiddhiQL复数过滤条件

问题描述 投票:0回答:1

我有一个表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
1个回答
0
投票

您可以使用siddhi table joins特别是以名称为条件的左外连接并在此过程中过滤掉其他情况

  1. 案例1和案例2的内部联接,仅当名称和ID匹配时,才会返回事件。
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;

© www.soinside.com 2019 - 2024. All rights reserved.