---
title: experimental.chain() function
description: experimental.chain() runs two queries in a single Flux script sequentially and outputs the results of the second query.
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/chain/
estimated_tokens: 1644
product: Flux
version: v0
---

# experimental.chain() function

-   Flux 0.68.0+
-   View InfluxDB support

`experimental.chain()` is [subject to change at any time](/flux/v0/stdlib/experimental/#experimental-packages-are-subject-to-change).

`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

```js
(first: stream[A], second: stream[B]) => stream[B] where A: Record, B: Record
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### first

(Required) First query to execute.

### second

(Required) Second query to execute.

## Examples

### Write to a bucket and query the written data

```js
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)
```
