Выберите строку ОТ в Grafana InfluxDB - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть некоторые данные о продажах в InfluxDB, в основном каждые 10 секунд я записываю общее количество продаж из SQL, а затем разбиваю их на продажи различных предметов в полях. Таким образом, строка может выглядеть следующим образом:

time        Bicycles Shovels Hats Candles Sales
01/01/2019     12       6      2     4      24
02/01/2019     14       9      3     5      31

(Это фиктивные данные для этого вопроса, и они не отражают число на изображениях, которые получены из производственных тестов, которые я проводил с фактическими данными)

Важно подчеркнуть, что это накапливается, каждая запись увеличивается на количество продаж.

Затем я могу использовать Grafana, чтобы показать мне группу разницы (max (sales)) по времени (1d)чтобы показать общий объем продаж (в данном случае в день)

enter image description here

Я также пытаюсь сделать это, чтобы показать наибольшее количество продаж в группе (день)в таблице, в таблице рекордов продаж, как хорошо мы сделали в прошлом.

Итак, у меня есть 3 запроса в Grafana:

SELECT time, max(difference) FROM (
   SELECT difference(max("Sales")) 
   FROM "autogen"."Paid_Orders" 
   WHERE $timeFilter 
   GROUP BY time(1d) fill(none)
)

Поменяйте местами «продажи» на велосипеды и шляпы (в последующих запросах, и я получаю таблицу, которая выглядит следующим образом:

Example results table

Проблема в том, что я не знаю, какая строка является каким полем,Обычно (в SQL) я бы сделал что-то вроде SELECT 'Sales' в качестве Type и т. Д., Чтобы добавить столбец с надписью "Sales". Но я не вижу такой возможности в Grafana или Influx.

  1. Неправильно ли я записываю данные и могу ли я использовать для этого теги?
  2. Как мне определитьстроки в этой таблице?

1 Ответ

1 голос
/ 06 ноября 2019

да, ваша структура данных выглядит не очень хорошо. Вместо одной записи:

time        Bicycles Shovels Hats Candles Sales
01/01/2019     12       6      2     4      24

сохранить несколько записей с другим тегом item (sales is int field):

time           item      sales 
01/01/2019     Bicycles  12  
01/01/2019     Shovels   6
01/01/2019     Hats      2
01/01/2019     Candles   4

Затем сгруппировать по времени AND item tag + SPREADфункция может быть использована для удаления подзапроса, например

SELECT time, SPREAD(sales) 
FROM "autogen"."Paid_Orders" 
WHERE $timeFilter 
GROUP BY time(1d), "item" fill(none)
...