Select Grafana InfluxDB 中的字符串

Select string FROM in Grafana InfluxDB

我在 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 按时间 (1d) 显示差异 (max(sales)) 以显示总销售额(在这种情况下为每天)

我还想做的是在 table 中显示每个组(天)的最大销售额,创纪录的销售额 table,我们过去的表现如何。

所以我在 Grafana 中有 3 个查询:

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

在后续查询中将 "sales" 换成自行车和帽子(无论什么),我最终得到一个 table,看起来像:

问题是我不知道哪一行是哪个字段。通常(在 SQL 中)我会做一些类似 SELECT 'Sales' 作为类型等的事情......添加一个包含 "Sales" 的列。但我无法将其视为 Grafana 或 Influx 中的一个选项。

  1. 我记录的数据有误吗?我可以为此利用标签吗?
  2. 如何识别此 table 中的行?

是的,你的数据结构看起来不太好。而不是一条记录:

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

用不同的 item 标签保存多条记录(sales 是 int 字段):

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

然后group by time AND item tag + SPREAD函数可以用来去除子查询,例如

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