【问题标题】:Use variable in MYSQL query Grafana Returns Column Name instead of metrics在 MYSQL 查询中使用变量 Grafana 返回列名而不是指标
【发布时间】:2021-01-24 02:54:26
【问题描述】:

我在 Grafana 中创建了一个名为 $mypair 的变量,我手动添加了一些选项,我可以在仪表板中查看这些选项。我选择一个选项(例如:AUDCAD)。

在图表设置的查询部分,我输入以下查询:

SELECT UNIX_TIMESTAMP(time) AS time, LEFT([[mypair]], 3) FROM allpairs

我试图从上面的查询中完成的实际上是在查询下面

SELECT UNIX_TIMESTAMP(time) AS time, AUD FROM allpairs 

我试图从 $mypair 变量中获取前 3 个字母,以便构建图形。但我没有成功。当我在图形设置的查询框上设置第一个查询时,它会给出以下格式的表格

2020-09-04 02:00:00    AUD
2020-09-04 03:00:00    AUD
2020-09-04 04:00:00    AUD
2020-09-04 05:00:00    AUD
2020-09-04 06:00:00    AUD
2020-09-04 07:00:00    AUD

但我需要的是使用 $mypair 变量的前 3 个字母选择列,因此输出如下

2020-09-04 02:00:00    63
2020-09-04 03:00:00    63
2020-09-04 04:00:00    62
2020-09-04 05:00:00    62
2020-09-04 06:00:00    62
2020-09-04 07:00:00    60

我会接受反馈。

【问题讨论】:

  • 您看到的查询输出是 MySQL 查询的正确行为。当我们说SELECT LEFT('AUDCAD', 3) FROM allpairs时,MySQL会选择AUDCAD字符串的前三个字符,即AUD。它不会使用 AUD 作为列名。要实现您想要做的事情,请使用 MySQL 准备好的语句。
  • @robert 谢谢你的例子,请你给一些关于mysql准备好的语句的指点或例子

标签: mysql regex grafana grafana-templating grafana-variable


【解决方案1】:

其实我已经在mysql中使用了Views,完成了我想要的。

就我而言,我创建了如下视图

CREATE VIEW `AUDCAD` AS SELECT UNIX_TIMESTAMP(time) AS "time", `AUD`, `CHF` AS FROM `allpairs` ORDER by time ASC;

然后在 Grafana 中使用以下查询

SELECT * FROM $mypair

【讨论】:

  • 在我的情况下,上述解决方法有效,但不确定它是否解决了 Grafana 中的真正问题。
猜你喜欢
  • 2017-08-22
  • 2021-12-22
  • 2020-02-25
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多