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

Source Object
Account
Joiner
JOIN_OBJECT_SOURCE("Opportunity", "AccountId", Id, "IsClosed = true")
Matching Key
Opportunity.AccountId = Account.Id
Before Joiner
Source Records
IdNameIndustry
A1AcmeTechnology
A2BetaRetail
A3GammaFinance
Joiner Records
IdAccountIdNameAmount
O1A1Acme Renewal10,000
O2A1Acme Expansion5,000
O3A1Acme Upgrade12,000
O4A2Beta Q1 Deal8,000
After Joiner
IdNameIndustry $Joiner.Id $Joiner.AccountId $Joiner.Name $Joiner.Amount
A1AcmeTechnologyO1A1Acme Renewal10,000
A1AcmeTechnologyO2A1Acme Expansion5,000
A1AcmeTechnologyO3A1Acme Upgrade12,000
A2BetaRetailO4A2Beta Q1 Deal8,000
A3GammaFinanceNULLNULLNULLNULL

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

Source Object
Product2
Joiner
JOIN_JSON('[{"Region":"US"},{"Region":"EU"},{"Region":"APAC"}]')
Matching Key
None
Before Joiner
Source Records
IdName
P1Widget
P2Gadget
Joiner Records
Region
US
EU
APAC
After Joiner
IdName$Joiner.Region
P1WidgetUS
P1WidgetEU
P1WidgetAPAC
P2GadgetUS
P2GadgetEU
P2GadgetAPAC

Every source record is paired with every Joiner record.