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

2.7 KiB

title description menu weight introduced
experimental.chain() function `experimental.chain()` runs two queries in a single Flux script sequentially and outputs the results of the second query.
flux_v0_ref
name parent identifier
experimental.chain experimental experimental/chain
101 0.68.0

experimental.chain() runs two queries in a single Flux script sequentially and outputs the results of the second query.

Flux typically executes multiple queries in a single script in parallel. Running the queries sequentially ensures any dependencies the second query has on the results of the first query are met.

Applicable use cases
  • Write to an InfluxDB bucket and query the written data in a single Flux script.

    _Note: experimental.chain() does not guarantee that data written to InfluxDB is immediately queryable. A delay between when data is written and when it is queryable may cause a query using experimental.chain() to fail.

  • Execute queries sequentially in testing scenarios.

Function type signature
(first: stream[A], second: stream[B]) => stream[B] where A: Record, B: Record

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

Parameters

first

({{< req >}}) First query to execute.

second

({{< req >}}) Second query to execute.

Examples

Write to a bucket and query the written data

import "experimental"

downsampled_max =
    from(bucket: "example-bucket-1")
        |> range(start: -1d)
        |> filter(fn: (r) => r._measurement == "example-measurement")
        |> aggregateWindow(every: 1h, fn: max)
        |> to(bucket: "downsample-1h-max", org: "example-org")

average_max =
    from(bucket: "downsample-1h-max")
        |> range(start: -1d)
        |> filter(fn: (r) => r.measurement == "example-measurement")
        |> mean()

experimental.chain(first: downsampled_max, second: average_max)