Back to Influxdb

union() function

content/flux/v0/stdlib/universe/union.md

latest4.0 KB
Original Source
<!------------------------------------------------------------------------------ IMPORTANT: This page was generated from comments in the Flux source code. Any edits made directly to this page will be overwritten the next time the documentation is generated. To make updates to this documentation, update the function comments above the function definition in the Flux source code: https://github.com/influxdata/flux/blob/master/stdlib/universe/universe.flux#L2747-L2747 Contributing to Flux: https://github.com/influxdata/flux#contributing Fluxdoc syntax: https://github.com/influxdata/flux/blob/master/docs/fluxdoc.md ------------------------------------------------------------------------------->

union() merges two or more input streams into a single output stream.

The output schemas of union() is the union of all input schemas. union() does not preserve the sort order of the rows within tables. Use sort() if you need a specific sort order.

Union vs join

union() does not modify data in rows, but unions separate streams of tables into a single stream of tables and groups rows of data based on existing group keys. join() creates new rows based on common values in one or more specified columns. Output rows also contain the differing values from each of the joined streams.

Function type signature
js
(tables: [stream[A]]) => stream[A] where A: Record

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

Parameters

tables

({{< req >}}) List of two or more streams of tables to union together.

Examples

Union two streams of tables with unique group keys

js
import "generate"

t1 =
    generate.from(
        count: 4,
        fn: (n) => n + 1,
        start: 2022-01-01T00:00:00Z,
        stop: 2022-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "foo")
        |> group(columns: ["tag"])

t2 =
    generate.from(
        count: 4,
        fn: (n) => n * (-1),
        start: 2022-01-01T00:00:00Z,
        stop: 2022-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "bar")
        |> group(columns: ["tag"])

union(tables: [t1, t2])

{{< expand-wrapper >}} {{% expand "View example output" %}}

Output data

_time_value*tag
2022-01-01T00:00:00Z0bar
2022-01-02T00:00:00Z-1bar
2022-01-03T00:00:00Z-2bar
2022-01-04T00:00:00Z-3bar
_time_value*tag
2022-01-01T00:00:00Z1foo
2022-01-02T00:00:00Z2foo
2022-01-03T00:00:00Z3foo
2022-01-04T00:00:00Z4foo

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

Union two streams of tables with empty group keys

js
import "generate"

t1 =
    generate.from(
        count: 4,
        fn: (n) => n + 1,
        start: 2021-01-01T00:00:00Z,
        stop: 2021-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "foo")
        |> group()

t2 =
    generate.from(
        count: 4,
        fn: (n) => n * (-1),
        start: 2021-01-01T00:00:00Z,
        stop: 2021-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "bar")
        |> group()

union(tables: [t1, t2])

{{< expand-wrapper >}} {{% expand "View example output" %}}

Output data

_time_valuetag
2021-01-01T00:00:00Z1foo
2021-01-02T00:00:00Z2foo
2021-01-03T00:00:00Z3foo
2021-01-04T00:00:00Z4foo
2021-01-01T00:00:00Z0bar
2021-01-02T00:00:00Z-1bar
2021-01-03T00:00:00Z-2bar
2021-01-04T00:00:00Z-3bar

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