繁体   English   中英

Grafana:SQL 查询 - 将“过滤器”应用于“计数”

[英]Grafana: SQL query - Apply "filter" to "count"

我试图在我的 SQL 查询中将过滤器应用于“计数”,但无法找出正确的方法。

在此处输入图片说明

左表的查询显示了错误类型可能具有的不同错误级别。 就我而言,“0 到 3”,其中 0 表示信息,3 表示关键错误。

SELECT
  stringsplit(alerts.Source, " - ", 1) AS ERROR_Level,
  stringsplit(alerts.Source, " - ", 2) AS ERROR_Type
FROM alerts

右表的查询显示了总体错误计数。 (出于演示目的,我在实数中添加了一些随机数。)
第一列显示错误类型,第二列显示错误总数。
从第 3 列开始,我只想过滤定义为 3 级的错误。
下一列错误级别 2 等等...

SELECT
  stringsplit(alerts.Source, " - ", 2) AS ERROR_Type,
  COUNT(alerts.Source)+100 AS ERROR_Count,
  COUNT(alerts.Source)+73 AS ERROR_Critical,
#  COUNT(alerts.Source) FILTER(WHERE stringsplit(alerts.Source, " - ", 1) = 3) AS critical,
  COUNT(alerts.Source)+30 AS ERROR_Warning
#  COUNT(alerts.Source) FILTER(WHERE stringsplit(alerts.Source, " - ", 1) = 2) AS warning
FROM alerts
GROUP BY ERROR_Type

正如你在上面的代码中看到的那样......
stringsplit(alerts.Source, " - ", 1)打印出错误级别
stringsplit(alerts.Source, " - ", 2)打印出错误类型

我用 SUM 解决了它。

SELECT
  stringsplit(alerts.Source, " - ", 2) AS error_type,
  COUNT(alerts.Source) AS total,
  SUM(IF(stringsplit(alerts.Source, " - ", 1) = 3,1,0)) AS critical_errors,
  SUM(IF(stringsplit(alerts.Source, " - ", 1) = 2,1,0)) AS errors,
  SUM(IF(stringsplit(alerts.Source, " - ", 1) = 1,1,0)) AS warnings,
  SUM(IF(stringsplit(alerts.Source, " - ", 1) = 0,1,0)) AS informations
FROM alerts
GROUP BY ERROR_Type

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM