1

我在 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或任何其他类型的加入。我刚刚开始学习它,对于时间序列数据库,这种类型的问题必须是它构建的最常见的问题之一。你如何快速做到这一点?

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

非常感谢。

PS 如果重要,我将通过 Python API 访问 Influx,并且可以在代码中进行此过滤,但强烈希望在 DB 端进行此操作,以尽量减少通过网络传输大量行...

更新

我看到了这个关于左连接的问题,但它似乎已经过时了,我需要一个内在的,答案特别暗示的东西会得到支持......

可能的方法

这行得通吗?

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

如果是的话,它在一张大桌子上的速度有多快(参见上面的测量值)?

4

0 回答 0