content/flux/v0/stdlib/experimental/chain.md
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.
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.
(first: stream[A], second: stream[B]) => stream[B] where A: Record, B: Record
{{% caption %}} For more information, see Function type signatures. {{% /caption %}}
({{< req >}}) First query to execute.
({{< req >}}) Second query to execute.
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)