---
title: join.right() function
description: join.right() performs a right outer join on two table streams.
url: https://docs.influxdata.com/flux/v0/stdlib/join/right/
estimated_tokens: 755
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/stdlib/join/right/
date: '2024-04-08T16:01:02-06:00'
lastmod: '2024-04-08T16:01:02-06:00'
---

* Flux 0.172.0+

InfluxDB support

`join.right()` performs a right outer join on two table streams.

The function calls `join.tables()` with the `method` parameter set to `"right"`.

##### Function type signature

```js
(<-left: stream[A], as: (l: A, r: B) => C, on: (l: A, r: B) => bool, right: stream[B]) => stream[C] where A: Record, B: Record, C: Record
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### left

Left input stream. Default is piped-forward data (\<-).

### right

(Required)
Right input stream.

### on

(Required)
Function that takes a left and right record (`l`, and `r` respectively), and returns a boolean.

The body of the function must be a single boolean expression, consisting of one
or more equality comparisons between a property of `l` and a property of `r`,
each chained together by the `and` operator.

### as

(Required)
Function that takes a left and a right record (`l` and `r` respectively), and returns a record.
The returned record is included in the final output.

## Examples

### Perform a right outer join

In a right outer join, `r` is guaranteed to not be a default record, but `l` may be a
default record. Because `l` is more likely to contain null values, the output record
is built almost entirely from properties of `r`, with the exception of `v_left`, which
we expect to sometimes be null.

For more information about the behavior of outer joins, see the [Outer joins](/flux/v0/stdlib/join/#outer-joins)section in the `join` package documentation.

```js
import "array"
import "join"

left =
    array.from(
        rows: [
            {_time: 2022-01-01T00:00:00Z, _value: 1, label: "a"},
            {_time: 2022-01-01T00:00:00Z, _value: 2, label: "b"},
            {_time: 2022-01-01T00:00:00Z, _value: 3, label: "d"},
        ],
    )
right =
    array.from(
        rows: [
            {_time: 2022-01-01T00:00:00Z, _value: 0.4, id: "a"},
            {_time: 2022-01-01T00:00:00Z, _value: 0.5, id: "c"},
            {_time: 2022-01-01T00:00:00Z, _value: 0.6, id: "d"},
        ],
    )

join.right(
    left: left,
    right: right,
    on: (l, r) => l.label == r.id and l._time == r._time,
    as: (l, r) => ({_time: r._time, label: r.id, v_left: l._value, v_right: r._value}),
)
```

[](#view-example-output)

View example output

#### Output data

|       \_time       |label|v\_left|v\_right|
|--------------------|-----|-------|--------|
|2022-01-01T00:00:00Z|  a  |   1   |  0.4   |
|2022-01-01T00:00:00Z|  c  |       |  0.5   |
|2022-01-01T00:00:00Z|  d  |   3   |  0.6   |

#### Related

* [Perform a right outer join](/flux/v0/join-data/right-outer/)
* [Troubleshoot join operations](/flux/v0/join-data/troubleshoot-joins/)

[transformations](/flux/v0/tags/transformations/)
| _time | label | v_left | v_right |
| --- | --- | --- | --- |
| _time | label | v_left | v_right |
| 2022-01-01T00:00:00Z | a | 1 | 0.4 |
| 2022-01-01T00:00:00Z | c |  | 0.5 |
| 2022-01-01T00:00:00Z | d | 3 | 0.6 |
