2020-08-21 22:45:01 +00:00
---
title: Flux data scripting language
description: >
Flux is a functional data scripting language designed for querying, analyzing, and acting on time series data.
menu:
2023-09-13 05:33:31 +00:00
influxdb_v1:
2020-08-21 22:45:01 +00:00
name: Flux
weight: 80
2023-09-13 05:33:31 +00:00
v2: /influxdb/v2/query-data/get-started/
2020-08-21 22:45:01 +00:00
---
Flux is a functional data scripting language designed for querying, analyzing, and acting on time series data.
2023-09-22 17:35:04 +00:00
Its takes the power of [InfluxQL ](/influxdb/v1/query_language/spec/ ) and the functionality of [TICKscript ](/kapacitor/v1/reference/tick/introduction/ ) and combines them into a single, unified syntax.
2020-08-21 22:45:01 +00:00
2023-09-13 05:33:31 +00:00
> Flux v0.65 is production-ready and included with [InfluxDB v1.8](/influxdb/v1/).
2020-08-21 23:02:31 +00:00
> The InfluxDB v1.8 implementation of Flux is read-only and does not support
> writing data back to InfluxDB.
2020-08-21 22:45:01 +00:00
## Flux design principles
Flux is designed to be usable, readable, flexible, composable, testable, contributable, and shareable.
Its syntax is largely inspired by [2018's most popular scripting language ](https://insights.stackoverflow.com/survey/2018#technology ),
2023-07-31 21:59:33 +00:00
JavaScript, and takes a functional approach to data exploration and processing.
2020-08-21 22:45:01 +00:00
The following example illustrates pulling data from a bucket (similar to an InfluxQL database) for the last five minutes,
filtering that data by the `cpu` measurement and the `cpu=cpu-total` tag, windowing the data in 1 minute intervals,
and calculating the average of each window:
```js
from(bucket:"telegraf/autogen")
|> range(start:-1h)
|> filter(fn:(r) =>
r._measurement == "cpu" and
r.cpu == "cpu-total"
)
|> aggregateWindow(every: 1m, fn: mean)
```
{{< children > }}