我已经安装并连接了Grafana和postgres。我使用grafana显示添加到postgres的数据图表。我的postgres数据库有一个表,其中包含来自多个来源的记录。模式如下:
time | source | bid | ask
12:01 | bitmex | 10 | 11
12:01 | deribit| 10 | 11
12:02 | bitmex | 9 | 11
每个来源的确切时间是不同的。我可以为每个来源绘制不同的线条:
我希望绘制两个不同来源的差异(每分钟分组)。我认为我需要选择“ source = x”和“ source = y”的分组分钟数并减去它们,同时保留Grafana中的时间宏以使整个过程保持快速。谁能指出我正确的方向?我认为用grafana中的“图形查询生成器”根本不可能。
答案 0 :(得分:0)
我无法在grafana中做到这一点(减去两个查询),而能够通过postgres查询(包括grafana宏)来做到这一点:
SELECT (first / second * 10000 - 10000) as spread, time
FROM
(
SELECT $__timeGroupAlias("time",$__interval,previous), avg(bid) AS "first"
FROM bbo_20s
WHERE $__timeFilter("time") AND market = 1
GROUP BY time
) AS e
FULL JOIN
(
SELECT $__timeGroupAlias("time",$__interval,previous), avg(bid) AS "second"
FROM bbo_20s
WHERE $__timeFilter("time") AND market = 2
GROUP BY time
) AS c
USING ("time") ;
结果看起来像这样,并且表现出色:
答案 1 :(得分:0)
我正在尝试做类似的事情。我没有执行连接,而是执行了一个查询,并在1个查询中进行了数学运算,然后返回了我要查找的结果。
floor(extract(epoch from finished)/20)*20 AS "time",
first.value AS "value"
FROM (
SELECT
$__timeGroupAlias(finished,$__interval,0),
finished,
id,
(extract(epoch from minion_jobs.finished) * 1000) - (extract(epoch from minion_jobs.created) * 1000) AS value
FROM minion_jobs
WHERE queue = 'parallel'
GROUP BY value,minion_jobs.finished, id
)AS first