/
Join

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:

Tab

Field

Description

Tab

Field

Description

General

Name

Enter a name for the unit. It must start with a letter, and cannot contain spaces. Only letters, numbers, and underscores are allowed.

Description

Enter a description detailing the scope of the unit.

Language

Specify 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 field

The 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 field

The 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 size

Time 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

Port

Description

Port

Description

in1

Input port for the first input stream.

in1Stall

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

in2

Input port for the second input stream.

in2Stall

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

Output ports

Port

Description

Port

Description

out

This port outputs events for which the condition is evaluated as "true".

discarded

This port outputs events that are late, i.e. do not fall within the timeframe.

error

This port outputs events that generate an error when evaluated against the condition. Standard error fields (error, exception) are added to the output events.

Related content

Join
More like this
Time Window Collector
Time Window Collector
More like this
Lookup - Flow unit
Lookup - Flow unit
More like this
Batch Detector
Batch Detector
More like this
Filter
More like this
Devo Full Query
Devo Full Query
More like this