# Join operations

Operations that bring two or more tables together. Among them are joining tables on a shared key, on a range or the nearest time, on approximate matches or by location, appending one table beneath another, keeping the rows found in another table, or comparing two tables to report the rows changed, added and removed. Some work out which records describe the same thing, and one collapses each group of matched records into one surviving record.

Page: <https://meridian.online/docs/arcform/operations/join>

## One row out per row in, with columns added or changed

- [Group matched records](https://meridian.online/docs/arcform/operations/group-matched-records): Turn matched pairs into one group id per record, following matches transitively (Runs as a SQL step)

## A new grain: each row stands for a group of input rows

- [Pick a surviving record](https://meridian.online/docs/arcform/operations/pick-a-surviving-record): Collapse each group of matched records into one surviving record by per-field rules (Runs as a SQL step)

## One table from two or more

- [Cross join tables](https://meridian.online/docs/arcform/operations/cross-join-tables): Cross join, cartesian product (Runs as a SQL step)
- [Compare two tables](https://meridian.online/docs/arcform/operations/compare-two-tables): Compare two tables, report changed, added and removed rows (Runs as a SQL step)
- [Join on approximate matches](https://meridian.online/docs/arcform/operations/join-on-approximate-matches): Approximate string match join (Runs as a SQL step)
- [Join tables on a key](https://meridian.online/docs/arcform/operations/join-tables-on-a-key): Inner, left, right, full join on equal keys (Runs as a SQL step)
- [Look up values from a reference table](https://meridian.online/docs/arcform/operations/look-up-values-from-a-reference-table): Enrich from a reference table (Runs as a SQL step)
- [Merge into a table](https://meridian.online/docs/arcform/operations/merge-into-a-table): Merge into a target, upsert, slowly changing dimension (Runs as a SQL step)
- [Put tables side by side](https://meridian.online/docs/arcform/operations/put-tables-side-by-side): Put tables side by side, row by row (Runs as a SQL step)
- [Join on a range or nearest time](https://meridian.online/docs/arcform/operations/join-on-a-range-or-nearest-time): Inequality, interval, as-of, nearest-in-time join (Runs as a SQL step)
- [Resolve entities](https://meridian.online/docs/arcform/operations/resolve-entities): Entity resolution with a trained or probabilistic matching model; reconciliation against an entity service (Not built yet)
- [Keep rows found in another table](https://meridian.online/docs/arcform/operations/keep-rows-found-in-another-table): Keep or drop rows by existence in another table (Runs as a SQL step)
- [Intersect or subtract tables](https://meridian.online/docs/arcform/operations/intersect-or-subtract-tables): Intersect, except (Runs as a SQL step)
- [Join by location](https://meridian.online/docs/arcform/operations/join-by-location): Join on spatial relationship, distance, containment (Runs as a SQL step)
- [Append tables](https://meridian.online/docs/arcform/operations/append-tables): Append tables by rows (Runs as a SQL step)
