---
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: 3765
product: Flux
version: v0
---

# tickscript.join() function

-   Flux 0.111.0+
-   View InfluxDB support

`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/)
