如何用 1 个 sql-query 定义多个图

Posted

技术标签:

【中文标题】如何用 1 个 sql-query 定义多个图【英文标题】:How to define multiple graphs with 1 sql-query 【发布时间】:2021-10-13 01:42:20 【问题描述】:

当我在 grafana 中使用 prometheus (promql) 作为数据源时,我可以定义在同一面板上显示多个图表的单个查询(例如 http_requests_total 显示所有 http 请求)。现在我想对 sql 数据源做同样的事情。我有一个包含时间序列数据的表,作为带有一些标签的简单计数器。我想将每个标签的 counter_value 显示为图表。当我为每个标签定义一个查询时,它会起作用。但是这个解决方案并不是真正可维护的,因为标签可能会有所不同。我希望只有 1 个查询,因为它适用于 promql。有没有办法定义一个查询,为每个标签显示一个图表?

在此示例中,仅显示了 1 个图表。我尝试使用 group by 和我的标签列,但没有成功。

SELECT
  $__timeGroupAlias(created,24h),
  sum(counter_value) AS "counter_value"
FROM counter
GROUP BY 1
ORDER BY 1

【问题讨论】:

【参考方案1】:

查看query variables。

查询变量允许您使用 SQL 查询动态构造变量,然后可以在仪表板中引用该变量。

您可以使用这样的查询从您的表中获取所有标签值:

SELECT tag FROM counter
GROUP BY tag;

我不是 100% 确定,但听起来您可以通过使用查询变量来获取所有所需值来解决您的问题,然后使用 repeat panel 选项。重复面板选项将为每个变量值重复图表。例如,如果您有一个查询变量 tag_var 返回值 tag_a, tag_b, tag_c,您可以通过启用重复面板选项以在 tag_var 上重复执行类似操作:

SELECT
  $__timeGroupAlias(created,24h),
  sum(counter_value) AS "counter_value"
FROM counter
WHERE tag_value = '$tag_var'
GROUP BY 1
ORDER BY 1

【讨论】:

感谢您的回答。我试过了,但这不是我要找的。不同的标签值在不同的面板中重复。我想将标签值放在具有不同图表的同一面板中。 @sge 您是否尝试过按原始查询中的标签进行分组? IE。添加 GROUP BY 1,标记 在我将 grafana 更新到最新版本后它已经工作了。以前版本中的饼图显示的数据不正确。谢谢

以上是关于如何用 1 个 sql-query 定义多个图的主要内容,如果未能解决你的问题,请参考以下文章

如何用Excel把几个柱形图合并在一起,并标出显著性差异

如何用Highcharts制作柱形图

如何用origin画3d曲线图

如何用SPSS软件把调查问卷中一个维度的多个问题合成一个变量,然后进行相关分析?求大神帮帮忙。

如何用log4j输出多个自定义日志文件

如何用ps把照片的灰色背景变为纯白色?