--- title: Get started with Flux description: > Get started with Flux by learning important concepts of the Flux language. menu: flux_v0: name: Get started weight: 1 related: - /resources/videos/purpose-of-flux/ --- Flux is a **functional data scripting** language designed to unify querying, processing, analyzing, and acting on data into a single syntax. ## Flux overview To understand how Flux works conceptually, consider the process of treating water. Water is pulled from a source, limited by demand, piped through a series of stations to modify (remove sediment, purify, and so on), and delivered in a consumable state.
## Basic Flux query Like treating water, a Flux query does the following: 1. Retrieves a specified amount of data from a source. 2. Filters data based on time or column values. 3. Processes and shapes data into expected results. 4. Returns the result. To see how to retrieve data from a source, select the data source: InfluxDB, CSV, or PostgreSQL. {{< code-tabs-wrapper >}} {{% code-tabs %}} [InfluxDB](#) [CSV](#) [PostgreSQL](#) {{% /code-tabs %}} {{% code-tab-content %}} ```js from(bucket: "example-bucket") |> range(start: -1d) |> filter(fn: (r) => r._measurement == "example-measurement") |> mean() |> yield(name: "_results") ``` {{% /code-tab-content %}} {{% code-tab-content %}} ```js import "csv" csv.from(file: "path/to/example/data.csv") |> range(start: -1d) |> filter(fn: (r) => r._measurement == "example-measurement") |> mean() |> yield(name: "_results") ``` {{% /code-tab-content %}} {{% code-tab-content %}} ```js import "sql" sql.from( driverName: "postgres", dataSourceName: "postgresql://user:password@localhost", query: "SELECT * FROM TestTable", ) |> filter(fn: (r) => r.UserID == "123ABC456DEF") |> mean(column: "purchase_total") |> yield(name: "_results") ``` {{% /code-tab-content %}} {{< /code-tabs-wrapper >}} Each example includes the following functions (in the order listed): - [`from()`](/flux/v0/stdlib/influxdata/influxdb/from/) to retrieve data from the data source. - [Pipe-forward operator (`|>`)](/flux/v0/get-started/syntax-basics/#pipe-forward-operator) to send the output of each function to the next function as input. - [`range()`](/flux/v0/stdlib/universe/range/), [`filter()`](/flux/v0/stdlib/universe/filter/), or both to filter data based on column values. - [`mean()`](/flux/v0/stdlib/universe/mean/) to calculate the average of values returned from the data source. - [`yield()`](/flux/v0/stdlib/universe/yield/) to yield results to the user. _For detailed information about basic Flux queries, see [Flux query basics](/flux/v0/get-started/query-basics/)._ {{< page-nav next="/flux/v0/get-started/data-model/" >}}