InfluxQL exclude measurements through regex

Currently I have a query :

SELECT mean("value") FROM /^abc\.concourse\.(worker*|web*).*\.system_mem_percent$/ WHERE $timeFilter GROUP BY time($__interval), * fill(null)

This works perfectly. Only measurements with web and worker get listed.

However, I am trying to figure out the inverse of this query. I.E select mean value from those measurements that DO NOT have worker or web in its name. How do I do the create a regex that excludes measurements that have ‘web*’ and ‘worker*’ in its name.

@vipinvkmenon Because InfluxQL uses the Go Regexp library, it does not support negative lookaheads in regular expressions. There may be another way to accomplish what you’re trying to do in InfluxQL, but you’ll have to do it differently.

The other option is to use Flux. Grafana now supports Flux. The Flux query would look something like:

from(bucket: "abc/concourse")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement != /^(worker*|web*).*/ and r._field == "_value")
  |> aggregateWindow(every: v.windowPeriod, fn:  mean)