我有一个查询,它从GIT中提取分支信息。我希望能够通过变量"epic“过滤数据。在Grafana中,我从数据库中提取了epic数据,可以从下拉列表女巫复选框中选择每个epic (多重选择)。
from(bucket: "my_bucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "my_measure")
|> filter(fn: (r) => r["_field"] == "Score")
|> filter(fn: (r) => r["epic"] == "${epic_db}")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")但当我在名单上选择多部史诗时,我得到了这样的答案:
|> filter(fn: (r) => r["epic"] == "{epic-1,epic-2}")它不像SQL语句那样工作(其中epic IN (epic1、epic2等)。对我起作用的是像这样构建正则表达式
filter(fn: (r) => r["epic"] =~ /epic1|epic2|epic3/但我不知道,如何构建这样一个正则表达式,通过使用这个下拉检查列表中的变量在Grafana。我试过这样的东西:
"/${epic_db}/"但不起作用。有什么想法吗?如何将InfluxDB2.0与Flux一起使用?
发布于 2022-05-20 07:46:54
查看变量格式选项文档这里。
基本上,grafana允许您选择如何在查询中格式化变量。在您的情况下,您可以这样做:
from(bucket: "my_bucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "my_measure")
|> filter(fn: (r) => r["_field"] == "Score")
|> filter(fn: (r) => r["epic"] =~ /${epic_db:regex}/)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")通过这种方式,您可以使用通量查询语言的regex功能构建。
https://stackoverflow.com/questions/71999186
复制相似问题