> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/more-details/applications/application-modules/join.md).

# Join

> Join left and right on key columns.

Joins `left` to `right` on the `on` columns. `how` picks which side's unmatched rows survive, and `suffix` disambiguates any non-key column the two sides share.

## At a glance

|                          |                        |
| ------------------------ | ---------------------- |
| Module type              | `Join`                 |
| Category                 | Primitives · Dataframe |
| Default tier             | `reactive`             |
| Runs on                  | `reactive`, `durable`  |
| Starts a flow            | no                     |
| Holds a body             | no                     |
| Keeps state between runs | no                     |
| Available in             | every application type |

## Parameters

### `on`

`string[]` · required · defaults to `[]`

The key columns, which must exist on both sides.

### `how`

`"inner" | "left" | "right" | "full"` · required · defaults to `"inner"`

Which side's unmatched rows survive the join.

### `suffix`

`string` · required · defaults to `"_right"`

Appended to any non-key column both sides carry.

## Inputs

| Port    | Kind        | Required | Description                                                                                                                           |
| ------- | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `on`    | `event`     | no       | Implicit on every module that does not itself start a flow: wire an event here to make this module the start of what that event runs. |
| `left`  | `dataframe` | yes      | The left side of the join.                                                                                                            |
| `right` | `dataframe` | yes      | The right side.                                                                                                                       |

## Outputs

| Port     | Kind        | Connects to           | Description                                                                     |
| -------- | ----------- | --------------------- | ------------------------------------------------------------------------------- |
| `output` | `dataframe` | `dataframe`, `signal` | The joined frame: left's columns, then right's, with `suffix` on any collision. |

***

[← All application modules](/more-details/applications/application-modules.md)
