关于InfluxDB

时间:2018-04-11 21:56:01

标签: inner-join influxdb influxdb-python

我在InfluxDB中有一些列有TickerPrice的股票价格数据。例如:

 Time  Ticker Price
------ ------ ------
 12:02  IBM   100.12
 12:02  MSFT   50.15
 12:03  IBM   100.15
 12:04  MSFT   51.00
 12:05  AMZN  200.00

我想提取每种股票的最新价格,即使它们可能在不同的时间。所以最终的选择应该是

 Time  Ticker Price
------ ------ ------
 12:03  IBM   100.15
 12:04  MSFT   51.00
 12:05  AMZN  200.00

在常规SQL中,人们通常会这样做:

SELECT values.*
  FROM (SELECT Ticker, MAX(Time) AS MaxTime
          FROM StockHistory
         GROUP BY Ticker) as keys
       INNER JOIN StockHistory as values
               ON keys.Ticker  = values.Ticker
              AND keys.MaxTime = values.Time

问题是,Influx似乎不支持INNER JOIN或任何其他类型的加入。我刚刚开始学习它,对于时间序列db,这类问题必须是它最常用的问题之一。你怎么快速地做到这一点?

速度是我关注的问题,因为我正在查看表中大约5-15百万行,以及150,000种不同的代码(并非所有代码都是股票,我存储的工具很多)。

非常感谢。

PS如果重要,我将通过Python API访问Influx,并且可以在代码中进行此过滤,但是我更倾向于在数据库端进行过滤,以最大限度地减少网络上大量行的传输。 ..

更新

我看到了this question about a left join,但它似乎已经过时了,我需要一个内在的时间,特别暗示的答案会得到支持......

可能的方法

这会有用吗?

SELECT LAST(Time), Price
  FROM StockHistory
 GROUP BY Ticker

如果是,那么在大桌子上的速度有多快(参见上面的测量结果)?

0 个答案:

没有答案