Skip to content

Table Join

Description

The Table Join activity joins two previous activity output tables using DuckDB. It reads the selected left and right activity tables, applies the configured join type and conditions, and writes the joined result as transformed data.

Supported Features

  • Two-table joins: Join a left activity table with a right activity table.
  • Multiple join types: Supports join type values supplied by the table join editor, including inner, left, right, full outer, and cross join forms.
  • Multiple conditions: Combines join conditions with AND.
  • Column-to-column conditions: Compare a left table column to a right table column.
  • Column-to-value conditions: Compare a left table column to a literal value when Selected is enabled.
  • Text operators: Supports operators such as contains, icontains, startswith, endswith, like, ilike, notlike, notilike, and rlike.
  • Cross join support: For CROSS JOIN, no ON clause is generated.

Input

TypeRequiredDescription
DataYesData tables produced by previous activities. The configured LeftTable and RightTable identify which previous activity outputs are joined.

Input Scenarios

1. Column-To-Column Join

Left table:

CustomerIdName
1Alice
2Bob

Right table:

CustomerIdOrderIdAmount
1O-001120
2O-00290

2. Column-To-Value Join

Use when filtering the left table during the join condition, for example Status = Active.

3. Cross Join

Use when every row from the left table should be paired with every row from the right table. Conditions are ignored.


Output

FieldTypeDescription
DataArrayJoined rows containing columns from both left and right tables.

Example Output

{
"Data": [
{
"CustomerId": 1,
"Name": "Alice",
"OrderId": "O-001",
"Amount": 120
},
{
"CustomerId": 2,
"Name": "Bob",
"OrderId": "O-002",
"Amount": 90
}
]
}

Configuration Fields

Field NameTypeRequiredDescription
JoinValuesTable Join EditorYesJoin configuration containing the selected left table, right table, join type, and join conditions.
LeftTableActivity TableYesPrevious activity output used as the left side of the join.
RightTableActivity TableYesPrevious activity output used as the right side of the join.
JoinTypeDropdownYesSQL join type inserted between the left and right tables. CROSS JOIN is treated specially and does not use conditions.
JoinConditionsObject ArrayConditionalConditions used in the join ON clause. Required for non-cross joins. Multiple conditions are joined using AND.
LeftColumnColumnYesColumn from the left table used in the condition.
OperatorText/DropdownYesComparison operator. Standard SQL operators and supported text operators can be used.
RightColumnColumn or ValueYesRight table column when Selected is false; literal comparison value when Selected is true.
SelectedBooleanNoWhen false, builds a column-to-column condition. When true, builds a column-to-value condition using RightColumn as a literal value.

Conditional Field Rendering Rules

The rendering behavior is controlled by the table join editor. In execution:

  • JoinConditions are not used when JoinType is CROSS JOIN.
  • RightColumn is treated as a literal value when Selected is true.
  • RightColumn is treated as a right-table column when Selected is false.

Sample Configurations

Scenario 1: Inner Join On CustomerId

{
"JoinValues": {
"leftTable": "Customers",
"rightTable": "Orders",
"joinType": "INNER JOIN",
"joinConditions": [
{
"LeftColumn": "CustomerId",
"Operator": "=",
"RightColumn": "CustomerId",
"Selected": false
}
]
}
}

Scenario 2: Join With Literal Value

{
"JoinValues": {
"leftTable": "Customers",
"rightTable": "Orders",
"joinType": "INNER JOIN",
"joinConditions": [
{
"LeftColumn": "Status",
"Operator": "=",
"RightColumn": "Active",
"Selected": true
}
]
}
}

Sample Output

{
"Data": [
{
"CustomerId": 1,
"Name": "Alice",
"Status": "Active",
"OrderId": "O-001",
"Amount": 120
}
]
}