Documentation

map() function

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.

data
    |> map(fn: (r) => ({ r with newColumn: r._value * 2 }))
  • Copy
  • Fill window
Function type signature
(<-tables: stream[A], fn: (r: A) => B, ?mergeKey: bool) => stream[B]
  • Copy
  • Fill window

For more information, see 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

import "sampledata"

sampledata.int()
    |> map(fn: (r) => ({r with _value: r._value * r._value}))
  • Copy
  • Fill window

View example input and output

Create a new table with new columns

import "sampledata"

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

View example input and output

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.

import "sampledata"

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

View example input and output


Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

InfluxDB 3 Core and Enterprise are now in Beta

InfluxDB 3 Core and Enterprise are now available for beta testing, available under MIT or Apache 2 license.

InfluxDB 3 Core is a high-speed, recent-data engine that collects and processes data in real-time, while persisting it to local disk or object storage. InfluxDB 3 Enterprise is a commercial product that builds on Core’s foundation, adding high availability, read replicas, enhanced security, and data compaction for faster queries. A free tier of InfluxDB 3 Enterprise will also be available for at-home, non-commercial use for hobbyists to get the full historical time series database set of capabilities.

For more information, check out: