Named Window
Provides examples on defining a named window, and summarizing data based on that.
This example uses time
window as the named window, but any window can be defined and used as a name window.
For more information on named windows refer the Siddhi query guide.
define stream TemperatureStream
(sensorId string, temperature double);
define window OneMinTimeWindow
(sensorId string, temperature double) time(1 min) ;
@info(name = 'Insert-to-window')
from TemperatureStream
insert into OneMinTimeWindow;
@info(name = 'Min-max-analysis')
from OneMinTimeWindow
select min(temperature) as minTemperature,
max(temperature) as maxTemperature
insert into MinMaxTemperatureOver1MinStream;
@info(name = 'Per-sensor-analysis')
from OneMinTimeWindow
select sensorId,
avg(temperature) as avgTemperature
group by sensorId
insert into AvgTemperaturePerSensorStream;
|
|
|
Define a named window with name |
|
|
|
Insert events in to the named time window. |
|
|
|
Calculate minimum and maximum of |
|
|
|
|
|
Calculate average of |
|
Aggregation Behavior
When events are sent to TemperatureStream
stream, following events will get emitted at MinMaxTemperatureOver1MinStream
stream via Min-max-analysis
query,
and AvgTemperaturePerSensorStream
stream via Per-sensor-analysis
query.
Time | Input to TemperatureStream |
Output at MinMaxTemperatureOver1MinStream |
Output at AvgTemperaturePerSensorStream |
---|---|---|---|
9:00:10 | ['1001' , 21.0 ] |
[21.0 , 21.0 ] |
['1001' , 21.0 ] |
9:00:20 | ['1002' , 25.0 ] |
[21.0 , 25.0 ] |
['1002' , 25.0 ] |
9:00:35 | ['1002' , 26.0 ] |
[21.0 , 26.0 ] |
['1002' , 25.5 ] |
9:00:40 | ['1002' , 27.0 ] |
[21.0 , 27.0 ] |
['1002' , 26.0 ] |
9:00:55 | ['1001' , 19.0 ] |
[19.0 , 27.0 ] |
['1001' , 20.0 ] |
9:01:30 | ['1002' , 22.0 ] |
[19.0 , 27.0 ] |
['1002' , 25.0 ] |
9:02:10 | ['1001' , 18.0 ] |
[18.0 , 22.0 ] |
['1001' , 18.0 ] |