如何通过变量过滤grafana仪表板的postgresql数据源中的子字符串?

问题描述 投票:0回答:1

我有一个 postgresql 表,其中包含一个名称字符串列。我在 grafana 仪表板中定义了一个变量,它采用搜索词关键字。我想过滤包含该子字符串变量的所有名称。

我尝试了3种方法都失败了。不确定,我做错了什么:

使用喜欢:

SELECT * FROM students WHERE name LIKE CONCAT(‘%’, $keyword, ‘%’)

使用位置:

SELECT * FROM students WHERE POSITION($keyword IN name) > 0;

使用STRPOS:

SELECT * FROM students WHERE STRPOS($keyword, name) > 0;

这些是我收到的错误: 情况1:

db query error: pq: syntax error at or near ","

案例2:

db query error: pq: syntax error at or near "IN"

案例3:

db query error: pq: syntax error at or near ","

在 grafana 面板中实现此功能的正确方法是什么?

postgresql grafana grafana-variable
1个回答
0
投票

您的问题是由于变量使用缺少引号引起的。正如官方文档所述,它们仅在某些有限的情况下添加:

从 Grafana 4.3.0 到 4.6.0,模板变量始终自动引用。如果您的模板变量是字符串,请勿将它们放在 where 子句中的引号中。

从 Grafana 4.7.0 开始,仅当模板变量是

multi-value
时,模板变量值才会被引用。

我怀疑你使用的是古老版本的 Grafana,或者你有多重选择,因为你是按子字符串搜索的。

因此,在任何查询中使用

'$keyword'
而不是
$keyword
,一切都应该没问题。


为了简化此类问题的调查,Grafana 允许在所有替换发生后、发送到数据源之前查看最终查询。为此,请转到面板菜单:检查 > 查询,然后单击显示页面上的 Refresh

© www.soinside.com 2019 - 2024. All rights reserved.