0

Using InfluxQL with this query, one could convert a table from Float to Integer:

SELECT value::integer INTO temp FROM measurement;
DROP MEASUREMENT measurement;
SELECT value::integer INTO measurement FROM temp;
DROP MEASUREMENT temp;

How can the same be done using Flux in InfluxDB 2?

InfluxDB 2 has an InfluxDB 1 compatibility layer, but this doesn't support SELECT ... INTO ... clauses: https://docs.influxdata.com/influxdb/v2.1/reference/api/influxdb-1x/#influxql-support So one does have to write the query using Flux, the new query language.

Stefan
  • 21
  • 1
  • 5

1 Answers1

0
  1. Create a temp bucket
  2. run this query:
from(bucket: "<bucket>")
  |> range(start: 1970-01-01T00:00:00Z, stop: now())
  |> filter(fn: (r) => r["_measurement"] == "<measurement>")
  |> filter(fn: (r) => r["_field"] == "value")
  |> toInt()
  |> to(bucket: "temp", org: "<org>")
  1. drop <measurement> in <bucket> via commandline:
influx delete --bucket <bucket> --start '2010-01-01T00:00:00Z' --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="<measurement>"' --org <org> --token <token>
  1. run this query:
from(bucket: "temp")
  |> range(start: 1970-01-01T00:00:00Z, stop: now())
  |> filter(fn: (r) => r["_measurement"] == "<measurement>")
  |> filter(fn: (r) => r["_field"] == "value")
  |> to(bucket: "<bucket>", org: "<org>"
  1. repeat from 2. for all measurements you want to convert

  2. drop temp bucket

Stefan
  • 21
  • 1
  • 5