Common Properties of Joiners
Join Types |
Slave Duplicates |
CTL Templates for Joiners |
Java Interfaces for Joiners |
Joiners serve to put together records with potentially different metadata according to the specified key and the specified transformation.
Joiners have both input and output ports. The first input port is called master (driver), the other(s) are called slave(s).
Joiners join records from a master port with particular records from an error port. Joiners do not join records between slave ports.
They can join records incoming through at least two input ports (ExtHashJoin, ExtMergeJoin and RelationalJoin). The others can also join records incoming through a single input port with those from a lookup table (LookupJoin) or database table (DBJoin). In them, their slave data records are considered to be incoming through a virtual second input port.
Sorted or Unsorted Records
Two of these Joiners require that incoming records are sorted: ExtMergeJoin and RelationalJoin.
Matching on Equality and Non-equality
Generally, joiners match on equality: all join key fields from a master must match the corresponding fields from a slave.
RelationalJoin joins data records based on the non-equality conditions.
Output Port for Unmatched Records
DBJoin, ExtHashJoin, ExtMergeJoin and LookupJoin have optional output ports for unmatched master data records, as well.
Metadata
Joiners propagate metadata between a master input port and output port for unmatched records. Joiners do not propagate metadata in any other direction.
Joiners have no metadata templates.
You must assign metadata on input edges to be able to specify the transformation. The metadata on an output edge can be created and edited in a transformation editor.
Transformation
These components use transformations that are described in the section concerning transformers. For detailed information about how transformation should be defined, see Defining Transformations. All transformations in Joiners use a common transformation template (CTL Templates for Joiners) and common Java interface (Java Interfaces for Joiners).
Here is an overview of all Joiners:
Table 58.1. Joiners Comparison
Component | Same input metadata | Sorted inputs | Slave inputs | Outputs | Output for drivers without slave | Output for slaves without driver | Joining based on equality | Auto-propagated metadata |
---|---|---|---|---|---|---|---|---|
Combine | ⨯ | ⨯ | 1–n | 1-n | ⨯ | |||
CrossJoin | ⨯ | ⨯ | 0-n | 1 | ⨯ | ⨯ | ⨯ | ✓ |
DBJoin | ⨯ | ⨯ | 1 (virtual) | 1-2 | ✓ | ⨯ | ✓ | ✓ |
ExtHashJoin | ⨯ | ⨯ | 1-n | 1 | ⨯ | ⨯ | ✓ | ✓ |
ExtMergeJoin | ⨯ | ✓ | 1-n | 1 | ⨯ | ⨯ | ✓ | ✓ |
LookupJoin | ⨯ | ⨯ | 1 (virtual) | 1-2 | ✓ | ⨯ | ✓ | ✓ |
RelationalJoin | ⨯ | ✓ | 1 | 1 | ⨯ | ⨯ | ⨯ | ⨯ |