文章目录
- 方式一 借助Grafana的Transfrom
 - 方式二 Influx子查询
 - Transfrom介绍
 
建议针对每类Metric,使用一个Metric,增加success的tag区分成功还是失败。
方式一 借助Grafana的Transfrom
第一步:新建2个Query
-  
Query Total:
SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter -  
Query Success:
SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter 

第二步:在Transform处增加Outer join,Field Name选择Time
第三步: 在Transform处增加Add field from calculation
- Mode: Binary operation
 - Operation:
 

问题:如果 第一步 的查询中没有数据,即没有一条记录,那么这个查询无法返回0这种。导致绘图失败。

方式二 Influx子查询
针对上面的问题当没有记录,不显示默认0的问题,我们可以通过子查询+fill(0)。
第一步:新建1个Query子查询+fill(0)
SELECT "success"  , "total"
	 FROM ( 
           SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter
		   ), (
           SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter
           )
	fill(0)
 
此时结果如下图:
1.当没值的时候显示情况

2.当有值的时候显示情况

这之后也可以配合Transform使用了,例如
Reduce-Calcuations = max,这里不讲了,反正Transfrom很强大哈。
第二步:针对第一步的结果包装一层。
SELECT sum("success") as tsuccess , sum("total") as ttotal
		FROM 
		( // start
	 SELECT "success"  , "total"
	 FROM ( 
           SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter
		   ), (
           SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter
           )
	fill(0)
         // end 这是第一步的sql
        ) Group by time($interval) fill(0)
 

第三步:针对第二步的结果包装一层。
select 
	 sum("tsuccess") / sum("ttotal") as rate
from 
	(
        第二步的sql
    )
 

Transfrom介绍
参考:https://blog.51cto.com/u_12227788/5471570
1. Add field from calculation 从计算中添加字段
从计算中添加字段,使用其他两个字段计算的新字段,每个转换可以添加一个新的字段
mode -选择一种模式:
- Reduce row -对选定字段的每一行独立应用选定的计算。
 - Binary option -对来自两个选定字段的单行中的值应用基本数学运算(求和、乘法等)。
 
Field name -如果选择 Reduce row,选择要在新字段计算中使用的字段名称。
 Calculation -如果您选择Reduce row模式,则会出现calculation字段。单击该字段以查看可用于创建新字段的计算选项列表。
 Operation -如果您选择Binary option模式,则会出现operation字段。这些字段允许对来自两个选定字段的单行中的值执行基本数学运算。还可以将数值用于二元运算。
 Alias -(可选)输入新字段的名称。如果将此留空,则该字段将被命名为与计算匹配。
Replace all fields -(可选)如果您想隐藏所有其他字段并在可视化中仅显示您的计算字段,请选择此选项。
2.Outer join 按字段连接
使用此转换按字段连接来自结果集的多个时间序列。
如果想组合查询以便从字段计算结果,则此转换特别有用。
多个Query的场景。一般选择按
Timejoin。
3.Merge 合并
 使用此转换将多个查询的结果组合成一个结果。这在使用表格面板可视化时很有帮助。可以合并的值被合并到同一行。如果共享字段包含相同的数据,则值是可合并的。
多个Query的场景。没有上面的Outer Join好用
4.Concatenate fields 连接字段
 将两个查询结果简单粗暴的拼接到一起



















