docs-v2/content/flux/v0/stdlib/experimental/diff.md

3.8 KiB

title description menu weight introduced
experimental.diff() function `experimental.diff()` takes two table streams as input and produces a diff.
flux_v0_ref
name parent identifier
experimental.diff experimental experimental/diff
101 0.175.0

experimental.diff() takes two table streams as input and produces a diff.

experimental.diff() compares tables with the same group key. If compared tables are different, the function returns a table for that group key with one or more rows. If there are no differences, the function does not return a table for that group key.

Note: experimental.diff() cannot tell the difference between an empty table and a non-existent table.

Important: The output format of the diff is not considered stable and the algorithm used to produce the diff may change. The only guarantees are those mentioned above.

Function type signature
(<-got: stream[A], want: stream[A]) => stream[{A with _diff: string}]

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

Parameters

want

({{< req >}}) Input stream for the - side of the diff.

got

Input stream for the + side of the diff.

Examples

Output a diff between two streams of tables

import "sampledata"
import "experimental"

want = sampledata.int()
got =
    sampledata.int()
        |> map(fn: (r) => ({r with _value: if r._value > 15 then r._value + 1 else r._value}))

experimental.diff(got: got, want: want)

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

Input data

_diff *tag _time _value
t1 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:30Z 18
t1 2021-01-01T00:00:40Z 15
t1 2021-01-01T00:00:50Z 4
_diff *tag _time _value
- t2 2021-01-01T00:00:00Z 19
+ t2 2021-01-01T00:00:00Z 20
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:30Z 20
t2 2021-01-01T00:00:40Z 13
t2 2021-01-01T00:00:50Z 1

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

Return a diff between a stream of tables and the expected output

import "experimental"

want = from(bucket: "backup-example-bucket") |> range(start: -5m)

from(bucket: "example-bucket")
    |> range(start: -5m)
    |> experimental.diff(want: want)