All nodes/Data/DataFrame Ops
DF Merge
SQL JOIN of two DataFrames: inner/left/right/outer/cross. Connect the left table to ``left`` and the right table to ``right``.
Type in the graph: df_merge
Exec
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Ports can be split into separate execution and data handles.
Try it
Minimal working workflow
- Execute + Data
Runs as pasted
When to use it
Joins two tables on shared keys — the SQL JOIN of the family: customer data pulled onto order rows, price-list values pulled onto a CRM export. If both tables mean the same thing and simply need to be stacked, that is df_concat.
The two inputs are not symmetrical. “Left” carries both execution and value: an arrival there runs the node. “Right” carries value only — it starts nothing and just reads what has already been computed.
How it works
“How” sets the semantics: inner keeps only rows that have a match, left and right keep
every row of the corresponding side, outer keeps all rows from both, and cross pairs every
left row with every right row.
“Join keys” are the columns that must match and must be named the same in both tables. A cross
join has no keys by definition, so the field is hidden in that mode.
Same-named non-key columns do not collide: the left one gets _left, the right one _right.
Both suffixes are configurable in the advanced settings.
Common mistakes
- The right branch has not run yet. The “Right” port does not start the node, so the branch that prepares the right-hand table has to finish earlier along the execution path. Otherwise the node fails, reporting that its input is not a table.
- The key has different names.
client_idon the left andidon the right will not join — rename the column with df_select first. - Mismatched key types. A number on the left and text on the right: pandas refuses to join such columns and the node fails.
- Empty keys with anything other than
cross. The graph fails validation.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Leftleft | Execute + Dataexecute_data | dataframe | |
Rightright | Datadata | dataframe |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Successoutput | Execute + Dataexecute_data | dataframe | |
Erroron_error | Execute + Dataexecute_data | — | shown when expose_error_output = true |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Howhow | string | inner | Join semantics. ``cross`` pairs every left row with every right row. Options: |
Join keyson | array<string> | — | Columns that must match in both frames. shown when how = inner | left | right | outer |
| Advanced | |||
Suffix for left collisionsleft_suffix | string | _left | Appended to a left column whose name also exists on the right. |
Suffix for right collisionsright_suffix | string | _right | Appended to a right column whose name also exists on the left. |
Shared fields
Every node has these three — the platform adds them, not the node author.
expose_error_output— When enabled, show an execution output to connect nodes that run if this step fails.split_ports_in— Show separate execution and data input handles instead of one combined port.split_ports_out— Show separate execution and data output handles instead of one combined port.