Sequence operators enable you to order events based on attributes that have sequential order.
The following table lists the input and output for each operator.
Operator |
Input |
Output |
---|---|---|
Contiguous Order |
Stream |
Stream |
Gap Window |
Stream |
Relation |
The Contiguous Order operator defines a stream that consists of events selected by one or more attributes and then placed in sequence sorted by another attribute.
Assume that you have the following scenario:
A server receives a stream of messages from various hardware devices.
For each hardware device, the messages have unique IDs (1, 2, 3, 4, and so on).
Because of an unreliable network, messages may be lost or received in a different order.
For each hardware device, you want to sort the messages by their unique ID.
You could add a Stream Input operator with the following attributes:
deviceID (VARCHAR)
msgID (BIGINT)
msg (VARCHAR)
You could then connect the Stream Input operator to a Contiguous Order operator.
In the property editor of the Contiguous Order operator, set the partition key to the deviceID attribute. This setting divides the input stream into multiple substreams, one per device.
In the property editor of the Contiguous Order operator, set the sort value to the msgID attribute and the start value to 1. For each substream, the Contiguous Order operator sorts the messages by their unique ID.
For example, let's say that the messages from one device arrive in the following order: 3, 2, 5, 1, 7, 4, 4, 6.
When message 1 is received, the Contiguous Order operator will output messages 1, 2, and 3. When message 4 is received, the Contiguous Order operator will output messages 4 and 5. When message 6 is received, the Contiguous Order operator will output messages 6 and 7.
The Contiguous Order operator ignores duplicate events. Therefore, the output stream in the hardware device scenario contains only one instance of message 4.
Note that in the output stream, the output from the multiple substreams is interspersed.
Drag a Contiguous Order operator from the Palette to the Design view.
Connect the input of the new Contiguous Order component to an operator that has stream output.
Double-click the Contiguous Order operator.
The property editor opens. Notice that the component has inherited the schema of its input stream.
In the Attributes area, set the Partition Key column to the attribute or attributes that you want to use to divide the input stream into substreams.
In the Sort By drop-down list, select the attribute that you want to sort by.
The attribute must have values that can be sorted sequentially.
In the Start field, type the attribute value that you want to start with.
(Optional) Click the Documentation tab and supply notes on this component.
Click OK.
The Gap Window operator defines a relation that consists of events that are missing from the input stream, based on an attribute that has a sequential order.
Assume that you have the following scenario:
A server receives a stream of messages from various hardware devices.
For each hardware device, the messages have unique IDs (1, 2, 3, 4, and so on).
Because of an unreliable network, messages may be lost or received in a different order.
For each hardware device, you want to sort the messages by their unique ID.
You could add a Stream Input operator with the following attributes:
deviceID (VARCHAR)
msgID (BIGINT)
msg (VARCHAR)
You could then connect the Stream Input operator to a Gap Window operator.
In the property editor of the Gap Window operator, set the partition key to the deviceID attribute. This setting divides the input stream into multiple substreams, one per device.
In the property editor of the Gap Window operator, set the sort value to the msgID attribute and the start value to 1. For each substream, the Gap Window operator creates an output relation that indicates which message is missing at any point in time.
For example, let's say that the messages from one device arrive in the following order: 3, 2, 5, 1, 7, 4, 4, 6.
When message 3 is received, the Gap Window operator will output message 1. When message 1 is received, the Gap Window operator will output message 4. When message 4 is received, the Gap Window operator will output message 6. When message 6 is received, the Gap Window operator will output message 8.
Note that in the output relation, the output from the multiple relations is interspersed.
Drag a Gap Window operator from the Palette to the Design view.
Connect the input of the new Gap Window component to an operator that has stream output.
Double-click the Gap Window operator.
The property editor opens. Notice that the component has inherited the schema of its input stream.
In the Attributes area, set the partition key to the attribute or attributes that you want to use to divide the input stream into substreams.
In the Sort By drop-down list, select the attribute that you want to sort by.
The attribute must have values that can be sorted sequentially.
In the Start field, type the attribute value that you want to start with.
(Optional) Click the Documentation tab and supply notes on this component.
Click OK.