docs-v2/content/flux/v0/stdlib/universe/group.md

8.3 KiB

title description menu weight flux/v0/tags introduced
group() function `group()` regroups input data by modifying group key of input tables.
flux_v0_ref
name parent identifier
group universe universe/group
101
transformations
0.7.0

group() regroups input data by modifying group key of input tables.

Note: Group does not guarantee sort order. To ensure data is sorted correctly, use sort() after group().

Function type signature
(<-tables: stream[A], ?columns: [string], ?mode: string) => stream[A] where A: Record

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

Parameters

columns

List of columns to use in the grouping operation. Default is [].

Note: When columns is set to an empty array, group() ungroups all data merges it into a single output table.

mode

Grouping mode. Default is by.

Available modes:

  • by: Group by columns defined in the columns parameter.
  • except: Group by all columns except those in defined in the columns parameter.

tables

Input data. Default is piped-forward data (<-).

Examples

Group by specific columns

import "sampledata"

sampledata.int()
    |> group(columns: ["_time", "tag"])

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

Input data

_time _value *tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z 10 t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z 17 t1
2021-01-01T00:00:40Z 15 t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z 13 t2
2021-01-01T00:00:50Z 1 t2

Output data

*_time _value *tag
2021-01-01T00:00:00Z -2 t1
*_time _value *tag
2021-01-01T00:00:00Z 19 t2
*_time _value *tag
2021-01-01T00:00:10Z 10 t1
*_time _value *tag
2021-01-01T00:00:10Z 4 t2
*_time _value *tag
2021-01-01T00:00:20Z 7 t1
*_time _value *tag
2021-01-01T00:00:20Z -3 t2
*_time _value *tag
2021-01-01T00:00:30Z 17 t1
*_time _value *tag
2021-01-01T00:00:30Z 19 t2
*_time _value *tag
2021-01-01T00:00:40Z 15 t1
*_time _value *tag
2021-01-01T00:00:40Z 13 t2
*_time _value *tag
2021-01-01T00:00:50Z 4 t1
*_time _value *tag
2021-01-01T00:00:50Z 1 t2

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

Group by everything except time

import "sampledata"

sampledata.int()
    |> group(columns: ["_time"], mode: "except")

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

Input data

_time _value *tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z 10 t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z 17 t1
2021-01-01T00:00:40Z 15 t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z 13 t2
2021-01-01T00:00:50Z 1 t2

Output data

_time *_value *tag
2021-01-01T00:00:20Z -3 t2
_time *_value *tag
2021-01-01T00:00:00Z -2 t1
_time *_value *tag
2021-01-01T00:00:50Z 1 t2
_time *_value *tag
2021-01-01T00:00:50Z 4 t1
_time *_value *tag
2021-01-01T00:00:10Z 4 t2
_time *_value *tag
2021-01-01T00:00:20Z 7 t1
_time *_value *tag
2021-01-01T00:00:10Z 10 t1
_time *_value *tag
2021-01-01T00:00:40Z 13 t2
_time *_value *tag
2021-01-01T00:00:40Z 15 t1
_time *_value *tag
2021-01-01T00:00:30Z 17 t1
_time *_value *tag
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:30Z 19 t2

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

Ungroup data

import "sampledata"

// Merge all tables into a single table
sampledata.int()
    |> group()

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

Input data

_time _value *tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z 10 t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z 17 t1
2021-01-01T00:00:40Z 15 t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z 13 t2
2021-01-01T00:00:50Z 1 t2

Output data

_time _value tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z 10 t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z 17 t1
2021-01-01T00:00:40Z 15 t1
2021-01-01T00:00:50Z 4 t1
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z 13 t2
2021-01-01T00:00:50Z 1 t2

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