我想弄清楚如何格式化我的键/值对仪表板变量。我有一个变量,它的定义是:
sensor_list = 4431,8298,11041,13781
sensor_kv = 4431 : Storage,8298 : Stairs,11041 : Closet,13781 : Attic
但是,我似乎无法通过 InfluxDB 有效地将它用于查询和仪表板格式。例如,我有一个面板,它的查询是这样的:
SELECT last("battery_ok") FROM "autogen"."Acurite-Tower" WHERE ("id" =~ /^$sensor_list$/) AND $timeFilter GROUP BY time($__interval) fill(null)
那行得通,但如果我用 KV 替换它,我就无法获得值:
SELECT last("battery_ok") FROM "autogen"."Acurite-Tower" WHERE ("id" =~ /^$sensor_kv$/) AND $timeFilter GROUP BY time($__interval) fill(null)
^ 返回时没有数据。
我也不知道如何访问 KV 对的值,比如重复面板的模板值。 ${sensor_kv:text}
返回单词“All”,但 ${sensor_kv:value}
实际上会导致直接错误:“错误:未找到变量格式值”
我的目标是双重的:
我读过formatting docs,他们提到的都是列表;那里没有键/值示例,当然也没有这样做。这显然是一个新特性 (here is the GH issue where its implementation is merged),所以我希望只是某个地方有一个文档遗漏。
答案 0 :(得分:-1)
键/值正在使用一些有意义的时间序列数据库,例如MySQL https://grafana.com/docs/grafana/latest/datasources/mysql/:
<块引用>另一个选项是可以创建键/值变量的查询。查询应返回名为 __text 和 __value 的两列。 __text 列值应该是唯一的(如果它不是唯一的,则使用第一个值)。下拉列表中的选项将包含一个文本和值,允许您将友好名称作为文本,将 id 作为值。
但这不是 InfluxDB 的情况:https://grafana.com/docs/grafana/latest/datasources/influxdb/ InfluxDB 无法返回 key=>value 结果 - 它仅返回时间序列(不是键=> 值)或仅返回值或仅返回键。
解决方法:
1.) 使用受支持的数据库(MySQL、PostgreSQL)只是为了获得正确的 key=>value 结果。你真的不需要为此创建表,只需组合 SELECT、UNION、... 就可以得到想要的结果。
2.) 使用隐藏变量,它将“翻译”值到键,然后在查询中使用。例如。 https://community.grafana.com/t/how-to-alias-a-template-variable-value/10929/3
当然,一切都有利有弊,例如多值变量值可能无法按预期工作。