---
title: tickscript.join() function
description: tickscript.join() merges two input streams into a single output stream based on specified columns with equal values and appends a new measurement name.
url: https://docs.influxdata.com/flux/v0/stdlib/contrib/bonitoo-io/tickscript/join/
estimated_tokens: 958
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/stdlib/contrib/bonitoo-io/tickscript/join/
date: '2024-04-08T16:01:02-06:00'
lastmod: '2024-04-08T16:01:02-06:00'
---

* Flux 0.111.0+

InfluxDB support

> [!Important]
> `tickscript.join()` is a user-contributed function maintained by
> the [package author](#package-author-and-maintainer).

`tickscript.join()` merges two input streams into a single output stream
based on specified columns with equal values and appends a new measurement name.

This function is comparable to [Kapacitor JoinNode](/kapacitor/latest/nodes/join_node/).

##### Function type signature

```js
(measurement: A, tables: B, ?on: [string]) => stream[{C with _measurement: A}] where B: Record, C: Record
```

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

## Parameters

### tables

(Required)
Map of two streams to join.

### on

List of columns to join on. Default is `["_time"]`.

### measurement

(Required)
Measurement name to use in results.

## Examples

### Join two streams of data

```js
import "array"
import "contrib/bonitoo-io/tickscript"

metrics =
    array.from(
        rows: [
            {_time: 2021-01-01T00:00:00Z, host: "host1", _value: 1.2},
            {_time: 2021-01-01T01:00:00Z, host: "host1", _value: 0.8},
            {_time: 2021-01-01T02:00:00Z, host: "host1", _value: 3.2},
            {_time: 2021-01-01T00:00:00Z, host: "host2", _value: 8.4},
            {_time: 2021-01-01T01:00:00Z, host: "host2", _value: 7.3},
            {_time: 2021-01-01T02:00:00Z, host: "host2", _value: 7.9},
        ],
    )
        |> group(columns: ["host"])

states =
    array.from(
        rows: [
            {_time: 2021-01-01T00:00:00Z, host: "host1", _value: "dead"},
            {_time: 2021-01-01T01:00:00Z, host: "host1", _value: "dead"},
            {_time: 2021-01-01T02:00:00Z, host: "host1", _value: "alive"},
            {_time: 2021-01-01T00:00:00Z, host: "host2", _value: "alive"},
            {_time: 2021-01-01T01:00:00Z, host: "host2", _value: "alive"},
            {_time: 2021-01-01T02:00:00Z, host: "host2", _value: "alive"},
        ],
    )
        |> group(columns: ["host"])

tickscript.join(
    tables: {metric: metrics, state: states},
    on: ["_time", "host"],
    measurement: "example-m",
)
```

[](#view-example-output)

View example output

#### Output data

|\*\_measurement|       \_time       |\_value\_metric|\_value\_state|\*host|
|---------------|--------------------|---------------|--------------|------|
|   example-m   |2021-01-01T00:00:00Z|      1.2      |     dead     |host1 |
|   example-m   |2021-01-01T01:00:00Z|      0.8      |     dead     |host1 |
|   example-m   |2021-01-01T02:00:00Z|      3.2      |    alive     |host1 |

|\*\_measurement|       \_time       |\_value\_metric|\_value\_state|\*host|
|---------------|--------------------|---------------|--------------|------|
|   example-m   |2021-01-01T00:00:00Z|      8.4      |    alive     |host2 |
|   example-m   |2021-01-01T01:00:00Z|      7.3      |    alive     |host2 |
|   example-m   |2021-01-01T02:00:00Z|      7.9      |    alive     |host2 |

#### Related

* [Kapacitor JoinNode](/kapacitor/v1/nodes/join_node/)
* [join() function](/flux/v0/stdlib/universe/join/)

[transformations](/flux/v0/tags/transformations/)
| *_measurement | _time | _value_metric | _value_state | *host |
| --- | --- | --- | --- | --- |
| *_measurement | _time | _value_metric | _value_state | *host |
| example-m | 2021-01-01T00:00:00Z | 1.2 | dead | host1 |
| example-m | 2021-01-01T01:00:00Z | 0.8 | dead | host1 |
| example-m | 2021-01-01T02:00:00Z | 3.2 | alive | host1 |

| *_measurement | _time | _value_metric | _value_state | *host |
| --- | --- | --- | --- | --- |
| *_measurement | _time | _value_metric | _value_state | *host |
| example-m | 2021-01-01T00:00:00Z | 8.4 | alive | host2 |
| example-m | 2021-01-01T01:00:00Z | 7.3 | alive | host2 |
| example-m | 2021-01-01T02:00:00Z | 7.9 | alive | host2 |
