Как рассчитать разницу между значениями столбцов разных записей в графане / postgres - PullRequest
0 голосов
/ 12 марта 2019

У меня установлены и подключены Grafana и postgres. Я использую графану для отображения графиков данных, которые добавляю в postgres. В моей базе данных postgres есть таблица с записями из разных источников. Схема выглядит следующим образом:

time   | source | bid | ask
12:01  | bitmex | 10  | 11
12:01  | deribit| 10  | 11
12:02  | bitmex | 9   | 11

Точное время на источник отличается. Я могу построить разные линии для каждого источника:

enter image description here

Я ищу график (сгруппированный в минуту) двух разных источников. Я думаю, что мне нужно выбрать сгруппированные минуты, где «source = x» и то же самое, где «source = y», и вычесть их, сохраняя при этом макросы времени из Grafana, чтобы все происходило быстро. Может кто-то указать мне верное направление? Я не думаю, что это вообще возможно с помощью "графического построителя запросов" в графане.

1 Ответ

0 голосов
/ 16 марта 2019

Я не смог сделать это в графане (вычитая два запроса) и смог сделать это с помощью запроса postgres (включая макросы графана):

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") ;

Результат выглядит следующим образом и очень производительный:

enter image description here

...