Document toolboxDocument toolbox

Join

Description

This unit is a Processor type.

This unit joins or merges two input streams that coincide within a configured timeframe, and that meet a specified condition. These conditions are predicates that can only evaluate to "true" or "false". 

Timestamp values coming from input events are used to determine the event time of the Join unit, instead of using system time. If the unit stops receiving events, and therefore cannot determine the time from the Timestamp values, the unit receives its time signals (called stall signals) via the in1Stall/In2Stall ports coming from Devo type units that provide the system time.

An event enters through one of the input ports. The event is held for the duration of the timeframe (window) configured in the size field. This timeframe is used as a sliding window to determine how often to capture and analyze data. See the table below for examples.

The event is joined with events stored in the window of the other in port. If the join condition is "true", the joined event is sent to the out output port. If the event is late, i.e. does not fall within the timeframe, it is sent to the discarded output port. If the evaluation produces an error, the event is sent to the error port.

Configuration

After dragging this unit into the Flow canvas, double-click it to access its configuration options. The following table describes the configuration options of this unit:

TabFieldDescription
GeneralNameEnter a name for the unit. It must start with a letter, and cannot contain spaces. Only letters, numbers, and underscores are allowed.
LanguageSpecify the language you will use to write the expression in the Predicate, e.g. Javascript, Groovy, etc.

Predicate

The condition you wish to evaluate. Open the expression editor to type an expression, stating the input fields and the condition you wish to apply to each.

Use 'in1.' and 'in2.' to indicate access fields of a specific input event.

In1 Timestamp fieldThe name of an event field that contains the timestamp used for the sliding windows, e.g. eventdate, for the first input stream.

In1 Key field(s)

The name of the first set of input event field(s) used for the join.

In2 Timestamp fieldThe name of an event field that contains the timestamp used for the sliding windows, e.g. eventdate, for the second input stream.
In2 Key field(s)The name of the second set of input event field(s) used for the join.

Size

Size of sliding window in seconds. For example, imagine you add a size of 300 seconds (5 minutes) with a timestamp at 11:00. The window will be 11:00 - 11:05. In order to determine the next window, the values set in the Purge size field are used.

Purge sizeTime at which the following sliding windows will start. For example, if the purge size is 60 seconds, the next time window for the input events will be 11:01-11:06, and so on.

Input ports

PortDescription
in1Input port for the first input stream.

in1Stall

Input port for the first stall signal (time) stream.

in2Input port for the second input stream.
in2StallInput port for the second stall signal (time) stream.

Output ports

PortDescription
outThis port outputs events for which the condition is evaluated as "true".
discardedThis port outputs events that are late, i.e. do not fall within the timeframe.
errorThis port outputs events that generate an error when evaluated against the condition. Standard error fields (error, exception) are added to the output events.