---
title: monitor.stateChanges() function
description: monitor.stateChanges() detects state changes in a stream of data with a _level column and outputs records that change from fromLevel to toLevel.
url: https://docs.influxdata.com/flux/v0/stdlib/influxdata/influxdb/monitor/statechanges/
estimated_tokens: 1748
product: Flux
version: v0
---

# monitor.stateChanges() function

-   Flux 0.42.0+
-   View InfluxDB support

`monitor.stateChanges()` detects state changes in a stream of data with a `_level` column and outputs records that change from `fromLevel` to `toLevel`.

##### Function type signature

```js
(<-tables: stream[{C with _level: D}], ?fromLevel: A, ?toLevel: B) => stream[E] where A: Equatable, B: Equatable, D: Equatable, E: Record
```

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

## Parameters

### fromLevel

Level to detect a change from. Default is `"any"`.

### toLevel

Level to detect a change to. Default is `"any"`.

### tables

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

## Examples

### Detect when the state changes to critical

```js
import "array"
import "influxdata/influxdb/monitor"

data =
    array.from(
        rows: [
            {_time: 2021-01-01T00:00:00Z, _level: "ok"},
            {_time: 2021-01-01T00:01:00Z, _level: "ok"},
            {_time: 2021-01-01T00:02:00Z, _level: "warn"},
            {_time: 2021-01-01T00:03:00Z, _level: "crit"},
        ],
    )

data
    |> monitor.stateChanges(toLevel: "crit")
```

[](#view-example-input-and-output)

View example input and output

#### Input data

| _time | _level |
| --- | --- |
| 2021-01-01T00:00:00Z | ok |
| 2021-01-01T00:01:00Z | ok |
| 2021-01-01T00:02:00Z | warn |
| 2021-01-01T00:03:00Z | crit |

#### Output data

| _time | *_level |
| --- | --- |
| 2021-01-01T00:03:00Z | crit |

[transformations](/flux/v0/tags/transformations/)
