Hi, i want to filter tags with “dmp” in the name without selecting the tag one by one. I tried the regexp solution but i can’t make it work (Filter with part of tag name).
How do i write the filter in the picture?
Hi, i want to filter tags with “dmp” in the name without selecting the tag one by one. I tried the regexp solution but i can’t make it work (Filter with part of tag name).
How do i write the filter in the picture?
Hello @bmenard,
What error are you getting?
Can you share your tag keys here so I can try to reproduce?
Thank you.
@bmenard,
You might also want to try the contains() function like:
tagsContain = ["100","101","102","103"]
from(bucket: "airsensor")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "airSensors")
|> filter(fn: (r) => r["_field"] == "co")
|> filter(fn: (r) => contains(value: r.sensor_id, set: tagsContain))
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
Where my tags are “TLM100”,“TLM101”,“TLM102”,“TLM103”
Or for you something like:
tagsContain = ["dmp"]
from(bucket: "mybucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "048_STEM")
|> filter(fn: (r) => r["_field"] == "value")
|> filter(fn: (r) => r["room_system"] == "AHU16")
|> filter(fn: (r) => contains(value: r.sensor, set: tagsContain))
Let me know if that works for you.
I got no error, just no data. I tried your solution but got no data also.
Here’s the original query:
from(bucket: “Bacnet_Network”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == “048_STEM”)
|> filter(fn: (r) => r[“room_system”] == “AHU16”)
|> filter(fn: (r) => r[“sensor”] == “470107_AI_4_STEM_TUE1_02_DMP_FBK” or r[“sensor”] == “470201_AO_5_STEM_TUE1_30_DMP_MOD” or r[“sensor”] == “470214_AO_1_STEM_TUE1_32_DMP_MOD” or r[“sensor”] == “470216_AO_1_STEM_TUE1_27_DMP_MOD” or r[“sensor”] == “470418_AO_1_STEM_TUE1_26_DMP_MOD” or r[“sensor”] == “470426_AO_5_STEM_TUE1_18_DMP_MOD”)
|> filter(fn: (r) => r["_field"] == “value”)
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
|> group()
|> mean(column: “_value”)
Hello @bmenard,
silly question, but did you try with capital letters? are you sure you have data in that time range? what happens if you increase the range?
Yes I did try capital letters but same result. I got near 2 days of data. I play with range but got no Results. Here’s the original query in csv if it can help.
Hello @bmenard,
What version are you using?
Hello @Anaisdg (20 characters min is annoying)
I use version 2.0.8
I also tried on 2.0.5 but same result
Hello @bmenard,
yes agreed can you please try using regex again?:
import "array"
data = array.from(rows: [{_time: now(), _value: 1.0, sensor: "470107_AI_4_STEM_TUE1_02_DMP_FBK"},
{_time: now(), _value: 1.0, sensor: "470201_AO_5_STEM_TUE1_30_DMP_MOD"}
{_time: now(), _value: 1.0, sensor: "470214_AO_1_STEM_TUE1_32_DMP_MOD"},
{_time: now(), _value: 1.0, sensor: "470216_AO_1_STEM_TUE1_27_DMP_MOD"},
{_time: now(), _value: 1.0, sensor: "470418_AO_1_STEM_TUE1_26_DMP_MOD"},
{_time: now(), _value: 1.0, sensor: "470426_AO_5_STEM_TUE1_18_DMP_MOD"}
])
// |> yield(name: "data")
data
|> filter(fn: (r) => r.sensor =~ /DMP/)
|> yield(name: "contains")
It worked for me on your tags.
Again @Anaisdg, thx you so much. you rock! . I don’t know what i wrote when i tried the regex but now it’s working.
Have a good weekend!