Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fdataprime%2Flanguage-reference%2Fcommands-reference%2Fstitch.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fdataprime%2Flanguage-reference%2Fcommands-reference%2Fstitch.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# `stitch`

## Description

The `stitch` command performs a **horizontal union** of two datasets, combining them side-by-side. It aligns rows from one dataset with rows from another and merges their columns into a single unified dataset.

This is particularly useful for joining datasets that share a logical order but lack a join key.

**Key behaviors:**

* Rows are combined in order (row 1 with row 1, row 2 with row 2, etc.).
* If one dataset contains more rows than the other, unmatched rows include

`null` values for missing columns.

* The resulting dataset contains all columns from both sides.

**Difference from \`union\`:**

* `stitch` merges datasets horizontally (adding columns).
* `union` merges datasets vertically (adding rows).

## Syntax

```
stitch (<subquery>) into <target-keypath>
```

## Example 1

**Use case: Merge sales and revenue data side-by-side**

Suppose you have two datasets—`sales` and `revenue`—that contain related information about products. You can use `stitch` to combine them horizontally into a single document per product, provided both datasets are ordered consistently.

### Example data

```
\ sales

{ "product": "Widget", "sales": 100 },

{ "product": "Gadget", "sales": 200 },

{ "product": "Dashboard", "sales": 150 }



\ revenue

{ "product": "Widget", "revenue": 5000 },

{ "product": "Gadget", "revenue": 8000 },

{ "product": "Dashboard", "revenue": 6000 }
```

### Example query

```
source sales

| orderby product

| stitch (source revenue | orderby product) into combined_data
```

### Example output

```
{ "product": "Widget", "sales": 100, "combined_data": { "product": "Widget", "revenue": 5000 } },

{ "product": "Gadget", "sales": 200, "combined_data": { "product": "Gadget", "revenue": 8000 } },

{ "product": "Dashboard", "sales": 150, "combined_data": { "product": "Dashboard", "revenue": 6000 } }
```

The `stitch` command aligns rows based on their order after sorting and attaches the right dataset (`revenue`) into the target keypath (`combined_data`) within the left dataset (`sales`).

Note

If the datasets have differing row counts, missing values from the shorter dataset are replaced with `null`:

## Example 2

If the datasets have unequal rows, the stitch command fills missing values with null.

Consider the following datasets:

sales dataset: (3 rows)

```
{ "product": "Widget", "sales": 100 }

{ "product": "Gadget", "sales": 200 }

{ "product": "Dashboard", "sales": 150 }
```

revenue dataset: (2 rows)

```
{ "product": "Widget", "revenue": 5000 }

{ "product": "Gadget", "revenue": 8000 }
```

### Example query

```
source sales | orderby product

| stitch (source revenue | orderby product) into combined_data
```

### Example output

```
{ "product": "Widget", "sales": 100, "combined_data": { "product": "Widget", "revenue": 5000 } }

{ "product": "Gadget", "sales": 200, "combined_data": { "product": "Gadget", "revenue": 8000 } }

{ "product": "Dashboard", "sales": 150, "combined_data": { "product": "Dashboard", "revenue": null } }
```

Note

Rows must represent the same entities and appear in the same order for meaningful stitching. If row alignment differs, results may not match as expected.
