Current Limitations
External Calls (Not supported in the current version)
Instead of directly returning or inserting the results to the output stream, Siddhi allows users to send the event to an external function and get the results.
from <stream>
insert into <stream-name>
call <function-name>”(“<parameters>”)” ( {<attribute-name>}| ‘*’)Example,
For the StockStream events having symbol=’IBM’, Siddhi will query StockTable of myStockDb database for all the events having symbol=’IBM’ and output them via IBMStream with attributes symbol, price and volume.from StockStream[symbol=’IBM’]
insert into IBMStream
call sql(myStockDb,
“select symbol, price, vol from StockTable where
symbol==${StockStream.symbol})”,
“{symbol string, price int, volume float}”);Recursive (nested) queries are not supported in the current version
This gives the events having average price over 50 events per symbol, having price >= 20 and symbol == ‘IBM’ from all incoming events of StockExchangeStream
from (from StockExchangeStream[ price >= 20]#window.length(50)
return symbol, avg(price) as avgPrice
group by symbol) [symbol=="IBM"]
insert into IBMStockQuote symbol, avgPriceSiddhi does not support joining three or more streams in a single query .
from RfidEvent#window.time(3000) as rfid
left outer join ProductName#window.length(100) as refprod
on rfid.productId = refprod.prodId
left outer join LocationDescription#window.length(200) as refdesc
on rfid.location = refdesc.locId
insert into JoinStream *As a workaround user can first join two stream and then join the resulting stream with the third stream.