> AI agents: this is one page from Mammoth Analytics documentation. The index of all pages as Markdown is https://docs.mammoth.io/llms.txt. Append `.md` to any docs URL, or send `Accept: text/markdown`, to get Markdown.

# Unify

> Reference for the Unify functions in Mammoth: Join and Lookup to combine data from another View, and Send to Dataset to write pipeline output to a dataset.

The Unify category has three functions for combining data across datasets and Views: Join and Lookup bring data from another View into the current pipeline, and Send to Dataset routes processed data out to another dataset.

To open the function list, click the **"Describe your transformation"** bar (or a **+** button in the Pipeline panel) and select **Unify**.

## Join

Join combines data from another View into the current View using one or more common key columns. Matched columns from the foreign View are added alongside your existing data—the result is a single enriched dataset, not two separate tables.

![Join panel before a view is chosen, with a Select a view to join with button](https://docs.mammoth.io/api/v1/images/20260417_130628_Screenshot2026-04-120000511.jpg)

**How to configure:**

**Step 1—Select a view to join with**

Click **Select a view to join with**. A two-level picker opens—first choose the dataset, then choose the View within it.

![Select a view to join with dialog listing Data Library files and the views in the selected file](https://docs.mammoth.io/api/v1/images/20260417_125427_Viewselectionmodal1.jpg)

Once selected, both Views are shown side by side as a preview—the current View on the left with a blue border, the foreign View on the right with an orange border. This lets you verify you have the right data before configuring the join.

![Both views displayed side by side after a view has been selected](https://docs.mammoth.io/api/v1/images/20260417_125446_Bothviewsdisplayedsidebysideafteraviewhasbeenselected1.jpg)

**Step 2—Define common keys**

- **Key column of current view / Key column of foreign view**—select the matching column from each side. These are the columns Mammoth uses to align rows between the two Views.
- Click **Add key columns** to add additional key pairs when matching on more than one column is needed.
- When the current View key is a number or date column, tick **Add range** under the key pair to match within a range instead of exactly, for example times within ±10 minutes. Enter how far below (**From -**) and above (**to +**) the value to match. For date keys, also choose the unit: milliseconds, seconds, minutes, hours, days, weeks, months or years.

![Join common keys with a number key pair and the Add range option ticked, showing From and to range fields](https://docs.mammoth.io/api/v1/images/20261009_120300_Join-AddRange.jpg)

![The Common keys section with two key pairs already mapped](https://docs.mammoth.io/api/v1/images/20260417_130600_TheCommonkeyssectionwithtwokeypairsalreadymapped1.jpg)

**Step 3—Choose columns to bring in**

- **Join columns**—check the columns from the foreign View you want to add to your current View. Use the search box to find columns quickly. Unchecked columns are excluded from the output.

![The Join columns checklist with several columns checked and a search box at the top](https://docs.mammoth.io/api/v1/images/20260417_130538_TheJoincolumnschecklistwithseveralcolumnscheckedandasearchboxatthetop1.jpg)

**Step 4—Set the join type**

Choose how rows from each side are handled when there is no matching key.

![Left Join diagram: Table 1 and Table 2 matched on Key Column, with all Table 1 rows kept in the result](https://docs.mammoth.io/api/v1/images/20260511_175858_Screenshot2026-04-27110614.jpg)

| Join type | What it returns |
| --- | --- |
| **Left** | All rows from the current View. Rows with no match in the foreign View get blank values for the joined columns. Use this to preserve all your current records and add supplementary information where available. |
| **Right** | All rows from the foreign View. Rows in the current View with no match are removed. Use this when you want to see all records from the reference dataset and which ones have matches. |
| **Inner** | Only rows that have a matching key in both Views. Rows without a match on either side are excluded. Use this when you only want complete, fully matched records. |
| **Outer** | All rows from both Views. Rows with no match on either side get blank values for the unmatched columns. Use this when you need to see everything from both datasets and identify gaps. |

**Step 5—Set a prefix (optional)**

- **Prefix**—enter a prefix to prepend to all joined column names, for example `cust_` or `prod_`. This prevents naming conflicts when the foreign View contains columns with the same names as your current View.

![Prefix field in the Join panel filled in with a sample prefix](https://docs.mammoth.io/api/v1/images/20260417_125629_hePrefixfieldfilledinwithasampleprefix1.jpg)

**Step 6—Apply the join**

Click **Apply**. The Join task card in the pipeline lists the joined View, common keys, joined columns, join type, and prefix.

![Join panel under two previewed Views, with common keys, join columns, join type options and a Prefix field](https://docs.mammoth.io/api/v1/images/20260417_125827_Applyjoin1.jpg)

**Non-unique key values**

If the key columns contain non-unique values, the Join task card shows a warning with a **More details** link. The link opens this dialog:

![Key column(s) have non-unique values dialog listing a duplicate entry (mita, 2), with Download as CSV and Edit task buttons](https://docs.mammoth.io/api/v1/images/20260417_125955_JoininPipelineshowingnon-uniquevalues1.jpg)

> If key columns contain non-unique values, Mammoth warns you in the pipeline task card after applying. When keys are not unique on both sides, a many-to-many relationship is created and the row count can multiply unexpectedly. Verify key uniqueness before joining large datasets, or use Remove Duplicate Rows first to clean the key column.
>
> For large datasets, this isn't always just a warning—if the predicted result would exceed 100,000 rows **and** be more than 5x the size of the larger input View, Mammoth blocks the join outright and the task fails with an error instead of completing. Deduplicate your key columns first to avoid this.

**Example:** An `Orders` View has columns `ID`, `Customer ID`, `Subtotal`, `Tax`, and `Total`. A separate `Customers` View has `ID` and `Name`. The key column names differ: `Customer ID` on the Orders side maps to `ID` on the Customers side.

Orders View (current):

| ID | Customer ID | Subtotal | Tax | Total |
| --- | --- | --- | --- | --- |
| 1 | 2 | 151 | 15 | 167 |
| 2 | 1 | 89 | 9 | 98 |
| 3 | 4 | 89 | 9 | 98 |

Join on `Customer ID` ↔ `ID`, select `Name`, set the prefix to `Customer`, and choose a Left join.

After the join:

| ID | Customer ID | Subtotal | Tax | Total | Customer.Name |
| --- | --- | --- | --- | --- | --- |
| 1 | 2 | 151 | 15 | 167 | Katie |
| 2 | 1 | 89 | 9 | 98 | John |
| 3 | 4 | 89 | 9 | 98 | Raj |

Every order now shows the customer's name. Customer 3 (Priya) exists in the Customers View but placed no orders, so with a Left join she doesn't appear. Switch to a Right join to surface customers with no orders: Priya's row appears with blank values for all order columns, making it easy to identify customers who haven't ordered yet.

## Lookup

Lookup retrieves a single value from another View based on a matching key and writes it as a new column. Think of it as an automated VLOOKUP that works across your entire dataset. Lookup is a simpler alternative to Join—use it when you need to pull one specific column from a reference View rather than bringing in multiple columns with full join control.

**How to configure:**

**Step 1—Select a view to look up from**

![Lookup panel before a view is chosen, with a Select a view to lookup from link](https://docs.mammoth.io/api/v1/images/20260417_130134_Lookup-select-view1.jpg)

Open the Transform menu, select **Unify**, then choose **Lookup**. A picker opens—first choose the dataset, then choose the View within it.

Once selected, both Views appear side by side—current View on the left with a blue border, foreign View on the right with an orange border. The foreign View name appears as a button at the top of the panel.

**Step 2—Set the key columns and value column**

- **Current view key column**—the column in your current View that contains the matching key.
- **Foreign view key column**—the corresponding key column in the foreign View. Mammoth uses these two columns to align rows between the Views.
- **Foreign view value column**—the single column whose value you want to retrieve. The dropdown shows each column name with its data type in parentheses—for example, `unit_cost (Number)` or `region (Text)`.

**Step 3—Set the output column**

The output control reads **Place in new column**. Click the word **new** to open a menu:

- **New**—enter a name in the field provided. The column type is inferred from the selected value column; use the type selector icons to override it: **T** for Text, the date icon for Date, or **#** for Number.
- **Existing**—a secondary dropdown appears. Select the column in your current View to overwrite with the retrieved values.

![Lookup panel with current view key column brand, foreign view key column city, value column country, and a Place in new text column field named Country_Import](https://docs.mammoth.io/api/v1/images/20261009_120400_Lookup-Panel.jpg)

**Step 4—Apply the lookup**

Click **Apply**. The Lookup task card in the pipeline lists the key columns, value column, and output column.

![Pipeline with a Lookup task, and the data grid showing the new City_Import column](https://docs.mammoth.io/api/v1/images/20260417_130258__Lookupapplied_1.jpg)

> Lookup always performs a Left join—all rows in the current View are preserved. Rows with no matching key in the foreign View get a blank value in the new column.

> Unlike Join, Lookup never multiplies rows. If the foreign View key column contains duplicate values, Mammoth resolves to a single matching row automatically—your current View's row count stays exactly the same either way. Which duplicate row wins isn't something you control, so if you need predictable results from a key with duplicates, use Remove Duplicate Rows on the foreign View first, or use Join instead if you need explicit control over duplicate matches.

**Example:** A `Mark Sheet` View has `Student ID` and `Total Marks`. A separate `Students` reference View has `ID` and `Name`. Use Lookup with `Student ID` as the current View key, `ID` as the foreign View key, and `Name` as the value column. Name the new column `Name` and click **Apply**.

Mark Sheet (current):

| Student ID | Total Marks |
| --- | --- |
| 2 | 239 |
| 1 | 232 |
| 4 | 200 |

After Lookup:

| Student ID | Total Marks | Name |
| --- | --- | --- |
| 2 | 239 | Bob |
| 1 | 232 | Alice |
| 4 | 200 | Diana |

Student 3 (Chuck) exists in the Students View but has no entry in the Mark Sheet, so no extra rows are added. Any `Student ID` with no match in the Students View gets a blank `Name` value.

> Need to bring in multiple columns or control which rows are kept? Use **Join** instead.

## Send to Dataset

Send to Dataset sends processed data from the current View to another dataset—either a new one or an existing one. Use this to route the output of a pipeline into a separate dataset for downstream analysis, reporting, or further transformation.

**How to configure:**

**Step 1—Choose a destination**

- **New Dataset**—enter a name for the new dataset. By default it is saved in the current project. To save it somewhere else in your workspace, click the Edit icon and choose a different location.
- **Existing Dataset**—select the target dataset from the dropdown. Use the search box to find it quickly.

![The destination selection step showing the New Dataset option](https://docs.mammoth.io/api/v1/images/20260417_173125_ThedestinationselectionstepshowingtheNewDatasetoption1.jpg)

![Select Dataset Location dialog with a project list, Data Library folders, and destination Branch Out Data](https://docs.mammoth.io/api/v1/images/20260417_173726_set_location1.jpg)

Click **Next** to proceed to the column mapping step.

**Step 2—Map columns**

![Column mapping step with source columns on the left connected by arrows to destination columns](https://docs.mammoth.io/api/v1/images/20260417_173748_Thecolumnmappingstepshowingsourcecolumnsontheleftconnectedbyarrowstodestinationcolumn1.jpg)

- **All columns toggle**—when on, all columns from the current View are sent to the destination. Turn it off to configure columns individually.
- **Individual column rows**—each row shows a source column mapped to a destination column. Toggle a row off to exclude that column. When sending to an existing dataset, you can map each column to a destination column or create a new one, and **Hide already-mapped columns from selection menu** declutters the list.
- **Include hidden columns**—tick this to include columns that are hidden in the current View's display settings (shown when the View has hidden columns).
- **Add Condition**—optionally restrict which rows are sent, using the same condition builder available in other functions.

**Step 3—Set task behavior**

![The bottom of the panel showing Task Position checkbox](https://docs.mammoth.io/api/v1/images/20260417_173803_ThebottomofthepanelshowingTaskPositioncheckbox1.jpg)

- **Task Position**—tick **Keep at the end of the Pipeline** to ensure this task always runs last, regardless of where it sits in the pipeline order.
- **Update Method**—choose how the destination dataset is updated each time the pipeline runs:
  - **Replace data**—overwrites the destination with the current output on every run. Use this when the destination should always reflect the latest state of the pipeline.
  - **Combine data**—appends the current output to the destination, adding rows rather than replacing them. Use this to accumulate data over time, for example appending weekly sales results into a master dataset.

**Example:** A pipeline cleans and enriches a raw sales View. Use Send to Dataset pointing to a `Reporting_Dataset` with Update Method set to Replace data. Every time the pipeline runs, the reporting dataset is refreshed with the latest clean output.

---
Source: https://docs.mammoth.io/learn/transform/unify.md · Updated: 2026-10-13