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
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?