What is a Joiner?
In DSP, a Joiner combines each source record with records from an additional dataset. After the Joiner is applied, the combined records become the source data for subsequent processing.
How the source data changes depends on the type of join:
- Left Join (matching key specified): Each source record is paired with matching Joiner records.
- Cross Join (no matching key specified): Each source record is paired with every Joiner record.
The examples below show how the source data changes after each type of join.
Left Join Example
Before Joiner
Source Records
| Id | Name | Industry |
|---|---|---|
| A1 | Acme | Technology |
| A2 | Beta | Retail |
| A3 | Gamma | Finance |
Joiner Records
| Id | AccountId | Name | Amount |
|---|---|---|---|
| O1 | A1 | Acme Renewal | 10,000 |
| O2 | A1 | Acme Expansion | 5,000 |
| O3 | A1 | Acme Upgrade | 12,000 |
| O4 | A2 | Beta Q1 Deal | 8,000 |
After Joiner
| Id | Name | Industry | $Joiner.Id | $Joiner.AccountId | $Joiner.Name | $Joiner.Amount |
|---|---|---|---|---|---|---|
| A1 | Acme | Technology | O1 | A1 | Acme Renewal | 10,000 |
| A1 | Acme | Technology | O2 | A1 | Acme Expansion | 5,000 |
| A1 | Acme | Technology | O3 | A1 | Acme Upgrade | 12,000 |
| A2 | Beta | Retail | O4 | A2 | Beta Q1 Deal | 8,000 |
| A3 | Gamma | Finance | NULL | NULL | NULL | NULL |
Each source record is paired with its matching Joiner records. One row is produced per match.
If no match is found, the source record is retained with NULL values in the $Joiner fields.
Cross Join Example
Before Joiner
Source Records
| Id | Name |
|---|---|
| P1 | Widget |
| P2 | Gadget |
Joiner Records
| Region |
|---|
| US |
| EU |
| APAC |
After Joiner
| Id | Name | $Joiner.Region |
|---|---|---|
| P1 | Widget | US |
| P1 | Widget | EU |
| P1 | Widget | APAC |
| P2 | Gadget | US |
| P2 | Gadget | EU |
| P2 | Gadget | APAC |
Every source record is paired with every Joiner record.