docs-v2/content/flux/v0/stdlib/contrib/bonitoo-io/tickscript/join.md

4.0 KiB

title description menu weight flux/v0/tags
tickscript.join() function `tickscript.join()` merges two input streams into a single output stream based on specified columns with equal values and appends a new measurement name.
flux_v0_ref
name parent identifier
tickscript.join contrib/bonitoo-io/tickscript contrib/bonitoo-io/tickscript/join
301
transformations

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.

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

{{% caption %}} For more information, see Function type signatures. {{% /caption %}}

Parameters

tables

({{< req >}}) Map of two streams to join.

on

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

measurement

({{< req >}}) Measurement name to use in results.

Examples

Join two streams of data

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",
)

{{< expand-wrapper >}} {{% expand "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

{{% /expand %}} {{< /expand-wrapper >}}