---
title: map() function
description: map() iterates over and applies a function to input rows.
url: https://docs.influxdata.com/flux/v0/stdlib/universe/map/
estimated_tokens: 3793
product: Flux
version: v0
---

# map() function

-   Flux 0.7.0+
-   View InfluxDB support

`map()` iterates over and applies a function to input rows.

Each input row is passed to the `fn` as a record, `r`. Each `r` property represents a column key-value pair. Output values must be of the following supported column types:

-   float
-   integer
-   unsigned integer
-   string
-   boolean
-   time

### Output data

Output tables are the result of applying the map function (`fn`) to each record of the input tables. Output records are assigned to new tables based on the group key of the input stream. If the output record contains a different value for a group key column, the record is regrouped into the appropriate table. If the output record drops a group key column, that column is removed from the group key.

#### Preserve columns

`map()` drops any columns that are not mapped explicitly by column label or implicitly using the `with` operator in the `fn` function. The `with` operator updates a record property if it already exists, creates a new record property if it doesn’t exist, and includes all existing properties in the output record.

```no_run
data
    |> map(fn: (r) => ({ r with newColumn: r._value * 2 }))
```

##### Function type signature

```js
(<-tables: stream[A], fn: (r: A) => B, ?mergeKey: bool) => stream[B]
```

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

## Parameters

### fn

(Required) Single argument function to apply to each record. The return value must be a record.

### mergeKey

*(Deprecated)* Merge group keys of mapped records. Default is `false`.

### tables

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

## Examples

-   [Square the value in each row](#square-the-value-in-each-row)
-   [Create a new table with new columns](#create-a-new-table-with-new-columns)
-   [Add new columns and preserve existing columns](#add-new-columns-and-preserve-existing-columns)

### Square the value in each row

```js
import "sampledata"

sampledata.int()
    |> map(fn: (r) => ({r with _value: r._value * r._value}))
```

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

View example input and output

#### Input data

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | -2 | t1 |
| 2021-01-01T00:00:10Z | 10 | t1 |
| 2021-01-01T00:00:20Z | 7 | t1 |
| 2021-01-01T00:00:30Z | 17 | t1 |
| 2021-01-01T00:00:40Z | 15 | t1 |
| 2021-01-01T00:00:50Z | 4 | t1 |

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | 19 | t2 |
| 2021-01-01T00:00:10Z | 4 | t2 |
| 2021-01-01T00:00:20Z | -3 | t2 |
| 2021-01-01T00:00:30Z | 19 | t2 |
| 2021-01-01T00:00:40Z | 13 | t2 |
| 2021-01-01T00:00:50Z | 1 | t2 |

#### Output data

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | 4 | t1 |
| 2021-01-01T00:00:10Z | 100 | t1 |
| 2021-01-01T00:00:20Z | 49 | t1 |
| 2021-01-01T00:00:30Z | 289 | t1 |
| 2021-01-01T00:00:40Z | 225 | t1 |
| 2021-01-01T00:00:50Z | 16 | t1 |

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | 361 | t2 |
| 2021-01-01T00:00:10Z | 16 | t2 |
| 2021-01-01T00:00:20Z | 9 | t2 |
| 2021-01-01T00:00:30Z | 361 | t2 |
| 2021-01-01T00:00:40Z | 169 | t2 |
| 2021-01-01T00:00:50Z | 1 | t2 |

### Create a new table with new columns

```js
import "sampledata"

sampledata.int()
    |> map(
        fn: (r) => ({time: r._time, source: r.tag, alert: if r._value > 10 then true else false}),
    )
```

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

View example input and output

#### Input data

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | -2 | t1 |
| 2021-01-01T00:00:10Z | 10 | t1 |
| 2021-01-01T00:00:20Z | 7 | t1 |
| 2021-01-01T00:00:30Z | 17 | t1 |
| 2021-01-01T00:00:40Z | 15 | t1 |
| 2021-01-01T00:00:50Z | 4 | t1 |

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | 19 | t2 |
| 2021-01-01T00:00:10Z | 4 | t2 |
| 2021-01-01T00:00:20Z | -3 | t2 |
| 2021-01-01T00:00:30Z | 19 | t2 |
| 2021-01-01T00:00:40Z | 13 | t2 |
| 2021-01-01T00:00:50Z | 1 | t2 |

#### Output data

| time | source | alert |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | t1 | false |
| 2021-01-01T00:00:10Z | t1 | false |
| 2021-01-01T00:00:20Z | t1 | false |
| 2021-01-01T00:00:30Z | t1 | true |
| 2021-01-01T00:00:40Z | t1 | true |
| 2021-01-01T00:00:50Z | t1 | false |
| 2021-01-01T00:00:00Z | t2 | true |
| 2021-01-01T00:00:10Z | t2 | false |
| 2021-01-01T00:00:20Z | t2 | false |
| 2021-01-01T00:00:30Z | t2 | true |
| 2021-01-01T00:00:40Z | t2 | true |
| 2021-01-01T00:00:50Z | t2 | false |

### Add new columns and preserve existing columns

Use the `with` operator on the `r` record to preserve columns not directly operated on by the map operation.

```js
import "sampledata"

sampledata.int()
    |> map(fn: (r) => ({r with server: "server-${r.tag}", valueFloat: float(v: r._value)}))
```

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

View example input and output

#### Input data

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | -2 | t1 |
| 2021-01-01T00:00:10Z | 10 | t1 |
| 2021-01-01T00:00:20Z | 7 | t1 |
| 2021-01-01T00:00:30Z | 17 | t1 |
| 2021-01-01T00:00:40Z | 15 | t1 |
| 2021-01-01T00:00:50Z | 4 | t1 |

| _time | _value | *tag |
| --- | --- | --- |
| 2021-01-01T00:00:00Z | 19 | t2 |
| 2021-01-01T00:00:10Z | 4 | t2 |
| 2021-01-01T00:00:20Z | -3 | t2 |
| 2021-01-01T00:00:30Z | 19 | t2 |
| 2021-01-01T00:00:40Z | 13 | t2 |
| 2021-01-01T00:00:50Z | 1 | t2 |

#### Output data

| _time | _value | server | *tag | valueFloat |
| --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | -2 | server-t1 | t1 | -2 |
| 2021-01-01T00:00:10Z | 10 | server-t1 | t1 | 10 |
| 2021-01-01T00:00:20Z | 7 | server-t1 | t1 | 7 |
| 2021-01-01T00:00:30Z | 17 | server-t1 | t1 | 17 |
| 2021-01-01T00:00:40Z | 15 | server-t1 | t1 | 15 |
| 2021-01-01T00:00:50Z | 4 | server-t1 | t1 | 4 |

| _time | _value | server | *tag | valueFloat |
| --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | 19 | server-t2 | t2 | 19 |
| 2021-01-01T00:00:10Z | 4 | server-t2 | t2 | 4 |
| 2021-01-01T00:00:20Z | -3 | server-t2 | t2 | -3 |
| 2021-01-01T00:00:30Z | 19 | server-t2 | t2 | 19 |
| 2021-01-01T00:00:40Z | 13 | server-t2 | t2 | 13 |
| 2021-01-01T00:00:50Z | 1 | server-t2 | t2 | 1 |

#### Related

-   [Query using conditional logic](/influxdb/v2/query-data/flux/conditional-logic/)
-   [Transform data with mathematic operations](/influxdb/v2/query-data/flux/mathematic-operations/)

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