CrossJoin

Available in Community Designer

Short Description
Ports
Metadata
CrossJoin Attributes
Details
Examples
Best Practices
Compatibility
See also

Short Description

CrossJoin creates a Cartesian product of records from connected input ports.

Component Same input metadata Sorted inputs Slave inputs Outputs Output for driver without slave Output for slaves without driver Joining based on equality Auto-propagated metadata
CrossJoin
no
no
0-n1
no
no
no
yes

Icon

Ports

Port typeNumberRequiredDescriptionMetadata
Input0
yes
Master input portAny1
1-n
no
Slave input port(s)Any2
Output0
yes
For output data recordsAny3

Metadata

CrossJoin automatically generates metadata on the output port from metadata on its input ports. The generated metadata can be seen as a dynamic template.

CrossJoin Attributes

AttributeReqDescriptionPossible values
Advanced
Transform [1] Transformation in CTL or Java defined in the graph. 
Transform URL[1]External file defining the transformation in CTL or Java. 
Transform class[1]External transformation class. 
Transform source charset Encoding of external file defining the transformation.e.g. UTF-8

[1] At most one of these attributes can be set.

Details

CrossJoin creates a Cartesian product of input records.

It works in the following way: the component takes the first record from the first port, the first record from the second port ... and the first record from the last port and generates the output record. Subsequently, it takes the first record from the first port, the first record from the second port ... and the second record from the last port. It continues with the third record from the last input port and so on.

Processing Large Number of Records

If you process a very large number of records, temporary files with the swapped records may be created on your hard drive. This prevents excessive memory usage.

Examples

Simple CrossJoin Example

Given a list of customers and a list of products of "All on the Store Ltd."

Customers:

Brown
Smith
Jones

Goods:

Pineapple
Turnip
Spaceship

Create a list containing all possibilities.

Solution

You only need to connect sources of data with CrossJoin component. No setup of attributes of the component is necessary.

The result is

Brown|Pineapple
Brown|Turnip
Brown|Spaceship
Smith|Pineapple
Smith|Turnip
Smith|Spaceship
Jones|Pineapple
Jones|Turnip
Jones|Spaceship

Best Practices

The edge giving the most records should be connected to the first input port.

If the transformation is specified in an external file (with Transform URL), we recommend users to explicitly specify Transform source charset.

Compatibility

4.1.0-M1

CrossJoin component is available since CloverETL 4.1.0-M1.

See also

Common Properties of Components
Specific Attribute Types
Common Properties of Transformers
Joiners Comparison