`DataAPI.innerjoin`

— Method`innerjoin((;A, B), by; [nonmatches=drop], [multi], [groupby], [cardinality=(*, *)])`

Join two datasets, `A`

and `B`

, by the `by`

condition.

`DataAPI.leftjoin`

— Method`leftjoin((;A, B), by; [nonmatches=(keep, drop)], [multi], [groupby], [cardinality=(*, *)])`

Join two datasets, `A`

and `B`

, by the `by`

condition.

`DataAPI.outerjoin`

— Method`outerjoin((;A, B), by; [nonmatches=keep], [multi], [groupby], [cardinality=(*, *)])`

Join two datasets, `A`

and `B`

, by the `by`

condition.

`DataAPI.rightjoin`

— Method`rightjoin((;A, B), by; [nonmatches=(drop, keep)], [multi], [groupby], [cardinality=(*, *)])`

Join two datasets, `A`

and `B`

, by the `by`

condition.

`FlexiJoins.by_distance`

— Method```
by_distance(f, dist, pred)
by_distance(f_L, f_R, dist, pred)
```

Join condition with `left`

-`right`

matches defined by `pred(dist(f_L(left), f_R(left)))`

. All distances from `Distances.jl`

are supported as `dist.`

**Examples**

```
by_distance(:time, Euclidean(), <=(3))
by_distance(:time, x -> minimum(x.times), Euclidean(), <=(3))
```

`FlexiJoins.by_key`

— Method```
by_key(f)
by_key(f_L, f_R)
```

Join condition with `left`

-`right`

matches defined by `f_L(left) == f_R(right)`

.

**Examples**

```
by_key(:name)
by_key(:name, x -> first(x.names))
```

`FlexiJoins.by_pred`

— Method`by_pred(f_L, pred, f_R)`

Join condition with `left`

-`right`

matches defined by `pred(f_L(left), f_R(left))`

.

**Examples**

```
by_pred(:start_time, <, :time)
by_pred(:time, ∈, :time_range)
```

`FlexiJoins.flexijoin`

— Method`flexijoin((;A, B), by; [nonmatches=drop], [multi], [groupby], [cardinality=(*, *)])`

Join two datasets, `A`

and `B`

, by the `by`

condition.

Performs an inner join by default. See also the `innerjoin()`

function.