greg
greg

Reputation: 35

influxdb - filter tag by regex

I'm trying to filter with a list made before like:

With version InfluxDB v2.6.0

source value

    ldevname = from(bucket: v.bucket)
     |> range(start: -365d)
      |> filter(fn: (r) => r._measurement == "LDEV_CNF" )
      |> filter(fn: (r) => r.poolid == "${pool}")
      |> keep(columns: ["_value","poolid"])
      |> group()
      |> keep(columns: ["_value"])

ldevname

the output:

output

Then the main query as an error:

invalid: compilation failed: error @17:37-17:50: regex parse error: ${ldevname} error: repetition quantifier expects a valid decimal

ldevname = from(bucket: v.bucket)
 |> range(start: -365d)
  |> filter(fn: (r) => r._measurement == "LDEV_CNF" )
  |> filter(fn: (r) => r.poolid == "${pool}")
  |> keep(columns: ["_value","poolid"])
  |> group()
  |> keep(columns: ["_value"])
  
//ldevname

from(bucket: v.bucket)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "LDEV" and r._field == "LDEV_IOPS" )
|> filter(fn: (r) => r["ldevID"] =~ /${ldevname}/ )
// an others try without success:
//|> filter(fn: (r) => r["ldevID"] =~ (v: /^$ldevname$/) )
//|> filter(fn: (r) => r["ldevID"] =~ /^$ldevname$/ )

Many thanks for any help

Upvotes: 0

Views: 91

Answers (1)

ebabeshko
ebabeshko

Reputation: 144

Try

|> filter(fn: (r) => r["ldevID"] =~ /^${ldevname:regex}/ )

${ldevname:regex} formats variable ldevname with multiple values into a valid regex string.

Upvotes: 1

Related Questions