Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

from <stream-name> {<conditions>}#window.<window-name>(<parameters>)
select ( {<attribute-name>} | ‘*’ |)
insert [<output-type>] into <stream-name> 

...

A sliding window that keeps last N events.

From the events having price >= 20 of the StockExchangeStream stream, output the expiring events of the length window to the StockQuote stream. Here the output events will have symbol and the per symbol average price as their attributes, only if the  per symbol average price > 50.

from StockExchangeStream[price >= 20]#window.length(50) 
select symbol, avg(price) as avgPrice

group by symbol having avgPrice>50 
insert into StockQuote for expired-events 


...

A sliding window that keeps events arrived within the last T time period.

From the events having symbol == 20 of the StockExchangeStream stream, output the both the newly arriving and expiring events of the time window to the IBMStockQuote stream. Here the output events will have maximum, average and minimum prices that has arrived within last minute as their attributes.

from StockExchangeStream[symbol == 'IBM']#window.time( 1 min ) 
select max(price) as maxPrice, avg(price) as avgPrice, min(price) as minPrice
insert into IBMStockQuote for all-events  

...

A time window that processes events in batches. This in a loop collects the incoming events arrived within last T time period and outputs them as a batch.

From the events of the StockExchangeStream stream, output the events per every 2 minutes from the timeBatch window to the StockQuote stream. Here the output events will have symbol and the per symbol sum of volume for last 2 minutes as their attributes.

from StockExchangeStream#window.timeBatch( 2 min
select symbol, sum(volume) as totalVolume
group by symbol 
insert into StockQuote 

...

A length window that outputs events as a batch only at the nth event arrival.

From the events having price >= 20 of the StockExchangeStream stream, output the expiring events of the lengthBatch window to the StockQuote stream. Here the output events will have symbol and the per symbol average price> 50 as their attributes.

from StockExchangeStream[price >= 20]#window.lengthBatch(50) 
select symbol, avg(price) as avgPrice
group by symbol having avgPrice>50

insert into StockQuote  for expired-events

...

A  window that keeps only the latest events that are unique according to the given attribute.

From the events of the StockExchangeStream stream, output the expiring events of the unique window to the StockQuote stream. The output events have symbol, price and volume as their attributes.

from StockExchangeStream#window.unique(symbol) 
select symbol, price, volume

insert into StockQuote for expired-events

...

A window that keeps the first events that are unique according to the given unique attribute

From the events of the StockExchangeStream stream, output the events of the firstUnique window to the StockQuote stream. The output events have symbol, price and volume as their attributes.

from StockExchangeStream#window.firstUnique(symbol) 
select symbol, price, volume

insert into StockQuote 

Info
titleinfo

Here, the output event is the first event arriving for each symbol.

FirstUnique window is mostly used in Join Queries, E.g If you want to know if a symbol has ever been traded in this StockExchange, you can join the SymbolStream (has an attribute symbol) with a First unique window as follows;

from SymbolStream#window.lenght(1) unidirectional join StockExchangeStream#window.firstUnique(symbol) 
select StockExchangeStream.symbol as symbol

insert  into AvailableSymbolStream

...

A window that would process time not according to the host system time, but according to timestamps provided externally by the input stream.

From the events of the LoginEvents stream, output the events of the login events of last 5 seconds based on the attribute 'timeStamp' of the stream. The output events have timeStamp, ip and count of login events during last 5 seconds as their attributes.

from LoginEvents#window.externalTime(timeStamp,5 sec)
select timeStamp, ip, count(timeStamp) as lastFiveSecLoginCount
insert into slidingFiveSecLoginInfo for all-events ;


Supported Units for Time windows

The following units are supported when specifying the time for a time window.

UnitSyntax
Yearyear | years
Monthmonth | months
Weekweek | weeks
Dayday | days
Hourhour | hours
Minutesminute | minutes | min
Secondssecond | seconds | sec
Millisecondsmillisecond | milliseconds

Note that each unit supports both the singular and plural format (e.g. second, seconds) and some units have a shortened form (i.e. sec, min).

Following examples are given to show the usage of time units.

from StockExchangeStream[symbol == 'WSO2']#window.time( 1 minute ) 
select max(price) as maxPrice, avg(price) as avgPrice, min(price) as minPrice
insert into WSO2StockQuote for all-events  

from StockExchangeStream[symbol == 'FBX']#window.timeBatch( 5 minutes ) 
select max(price) as maxPrice, avg(price) as avgPrice, volume
insert into FBStockQuote

from StockExchangeStream[symbol == 'FBX']#window.timeBatch( 5 min ) 
select max(price) as maxPrice, avg(price) as avgPrice, volume
insert into FBStockQuote

Excerpt
hiddentrue

Siddhi windows in wiki format

...