Partitions divide streams and queries into isolated groups in order to process them in parallel and in isolation. A partition can contain one or more queries and there can be multiple instances where the same queries and streams are replicated for each partition.
Each partition is tagged with a partition key. Those partitions only process the events that match the corresponding partition key.
Partitions allow you to process the events groups in isolation so that event processing can be performed using the same set of queries for each group.
Generate Partition Key
A partition key can be generated by value or by range.
Partition by Value
This is created by generating unique values using input stream attributes.
partition with ( <expression> of <stream name>,
<expression> of <stream name>, ... )
This query calculates the maximum temperature recorded within the last 10 events per
partition with (deviceID of TempStream)
insert into DeviceTempStream
select roomNo, deviceID, max(temp) as maxTemp
from TempStream window sliding_length (10);
Partition by Range
This is created by mapping each partition key to a range condition of the input streams numerical attribute.
partition with ( <condition> as <partition key> or
<condition> as <partition key> or ... of <stream name>,
This query calculates the average temperature for the last 10 minutes per office area.
partition with ( roomNo >= 1030 as 'serverRoom' or
roomNo < 1030 and roomNo >= 330 as 'officeRoom' or
roomNo < 330 as 'lobby' of TempStream)
insert into AreaTempStream
select roomNo, deviceID, avg(temp) as avgTemp
from TempStream window sliding_time(10 min)