Join

Join is an operation to combine two data sets in a side-by-side manner. At least one column must be present in both data sets so the field values can be compared e.g. pump id.

There are 4 common types: inner, outer, left outer, and right outer.

Inner Joins

An inner join takes only the rows of data in which both data sets have common field values.

In the example below, the join takes place on the pump id column so the C and D rows are excluded from the joined data set as these values are not common between the two data sets.

Outer Joins

An outer join keeps all data from both data sets, regardless of the values. Common rows have columns filled from both data sets, whereas rows without commonality fill the blanks in with nulls.

In the example below, A and B rows have all the fields filled. C and D rows are included, but with nulls to replace the incomplete data.

Left Outer Joins

A left outer join keeps all data from the left data set. Common rows have columns filled from both data sets, whereas rows from the left without commonality fill the blanks from the right with nulls.

In the example below, A and B rows have all the fields filled. C row is included as it is from the left data set, but with nulls to replace the incomplete data from the right. The D row is excluded as there is no common match on the left.

Right Outer Joins

A right outer join keeps all data from the right data set. Common rows have columns filled from both data sets, whereas rows from the right without commonality fill the blanks from the left with nulls.

In the example below, A and B rows have all the fields filled. D row is included as it is from the right data set, but with nulls to replace the incomplete data from the left. The C row is excluded as there is no common match on the right.

XMPro provides a convenient Transformation to join data arriving from two payloads or legs (the left and the right) into a single payload in a Data Stream.

Details for an example and its configuration can be found in the How to Use section.

Pre-requisites

None at this time

Current Version

  • Download the Join Transformation v3.51 (Last Update: 12 Nov 2025)

Please contact XMPro if you're looking for an older version of this Agent.

Join Release Notes

Version
Date
Description

3.51

12 Nov 2025

Repackaged to ensure the select list, type, and join criteria properties are required.

3.50

11 Nov 2025

Integrity Check requires the Date-Diff Unit property for streaming behavior.

Repackaged to translate the Agent's properties.

3.40

07 Sep 2022

Repackaged to include the Agent's Category.

3.39

23 Dec 2021

Fixed context data not being available to match when allowing at most one match with context behavior.

Generate the combined dataset before applying Match Once.

When Match Once is enabled, context data is:

  • available for subsequent matches on streaming data i.e. the streaming data is matched once.

  • not outputted as both a match and again as unmatched for outer joins (i.e. IsMatched does apply to context data).

  • not outputted as unmatched for an outer join when there would have been a match had Match Once not been applied.

3.38

06 Oct 2021

Prefix properties

  • Added option to override L_ or R_ prefixes.

  • Added option to specify whether prefixes should only be added to duplicated field names (default is to continue prefixing as per prior versions).

  • Removed 3.37 option to specify whether to trim L_ and R_ prefixes.

3.37

16 Aug 2021

Added option to specify whether to trim L_ and R_ prefixes (default is not to trim).

3.36

22 May 2020

Batch outer join output

  • Outer join unmatched events are output in batches.

  • Outer joins are permitted on context sides.

  • Rather than a single output per event, the outer join on a context side will be fulfilled every time a batch of data comes in on the streaming side.

3.31

20 May 2020

Batch inner join output

  • Agent outputs matched events in batches.

  • Configuration forbids and warns against outer joins on context.

  • Updated logic to use the faster IComparable instead of dynamic.

3.30

07 May 2020

Updated agent to handle errors via error endpoint.

3.20

26 Feb 2020

Updated evaluation to throw errors when there is a fault.

3.10

04 Sep 2018

Updated System.Reactive.

3.09

20 Jun 2018

Added option to allow at most one match per record.

3.08

24 May 2018

Removed output batching

  • Added try/catch to subscription-observing methods

  • Added field validation

3.07

10 May 2018

Altered handling of context data to better match Azure/Nesper and prevent duplicate outputs.

3.06

01 May 2018

Added Context Provider-related configuration settings.

Fixed the “>” operator incorrectly performing a “Less than” comparison.

3.05

26 Apr 2018

Agent state updated to Virtual.

3.04

26 Apr 2018

Added System.Reactive.dll and updated selected method

3.03

26 Apr 2018

Updated DLLs.

3.02

25 Apr 2018

Fixed initialization issues.

Last updated

Was this helpful?