TUMBLING_EXTERNAL_TIME()
A batch (tumbling) time window based on external time, that holds events arrived during window.time periods, and gets updated for every window.time.
Syntax
WINDOW TUMBLING_EXTERNAL_TIME(<LONG> timestamp, <INT|LONG|TIME> window.time)
WINDOW TUMBLING_EXTERNAL_TIME(<LONG> timestamp, <INT|LONG|TIME> window.time, <INT|LONG|TIME> start)
WINDOW TUMBLING_EXTERNAL_TIME(<LONG> timestamp, <INT|LONG|TIME> window.time, <INT|LONG|TIME> start, <INT|LONG|TIME> timeout)
WINDOW TUMBLING_EXTERNAL_TIME(<LONG> timestamp, <INT|LONG|TIME> window.time, <INT|LONG|TIME> start, <INT|LONG|TIME> timeout, <BOOL> replace.with.batchtime)
Query Parameters
| Name | Description | Default Value | Possible Data Types | Optional | Dynamic |
|---|---|---|---|---|---|
| timestamp | The Unix timestamp in milliseconds which the window determines as current time and will act upon. The value of this parameter should be monotonically increasing. Max. int is 2^32, or 2147483647. | LONG | No | Yes | |
| window.time | The batch time period for which the window should hold events. | INT LONG TIME | No | No | |
| start | User defined start time. This could either be a constant (of type int, long, or time) or an attribute of the corresponding stream (of type long). If an attribute is provided, initial value of attribute would be considered as startTime. | Timestamp of first event | INT LONG TIME | Yes | Yes |
| timeout | Time to wait for arrival of new event, before flushing and giving output for events belonging to a specific batch. | System waits till an event from next batch arrives to flush current batch | INT LONG TIME | Yes | No |
| replace.with.batchtime | This indicates to replace the expired event timeStamp as the batch end timeStamp | System waits till an event from next batch arrives to flush current batch | BOOL | Yes | No |
Example 1
CREATE STREAM cseEventStream (symbol string, price float, volume int, eventTime long);
CREATE SINK OutputStream WITH (type='stream', stream='OutputStream') (symbol string, price double);
CREATE WINDOW cseEventWindow (symbol string, price float, volume int, eventTime long) TUMBLING_EXTERNAL_TIME(eventTime, 1 sec) OUTPUT expired events;
@info(name = 'query0')
INSERT INTO cseEventWindow
FROM cseEventStream;
@info(name = 'query1')
INSERT expired events INTO OutputStream
SELECT symbol, sum(price) AS price
FROM cseEventWindow;
This processes events that arrive every second from the eventTime.
Example 2
CREATE STREAM cseEventStream (symbol string, price float, volume int, eventTime long);
CREATE WINDOW cseEventWindow (symbol string, price float, volume int, eventTime long) TUMBLING_EXTERNAL_TIME(eventTime, 20 sec, 0) OUTPUT expired events;
This processes events that arrive every 1 seconds from the eventTime. Starts on 0th millisecond of an hour.
Example 3
CREATE STREAM cseEventStream (symbol string, price float, volume int, eventTime long, eventTimestamp long);
CREATE WINDOW cseEventWindow (symbol string, price float, volume int, eventTime long, eventTimestamp long) TUMBLING_EXTERNAL_TIME(eventTime, 2 sec, eventTimestamp, 100) OUTPUT expired events;
This processes events that arrive every two seconds from the eventTime. Considers the first event's eventTimestamp value as startTime. Waits 100 milliseconds for the arrival of a new event before flushing current batch.