如何将我的分钟数据划分为包含Timescaledb(PostgreSQL扩展)中每个月的表



我是timescaledb的新手,我想为表中的每只股票存储一分钟的ohlcv报价。一只股票每天产生 1440 个即时报价,每月生成 43200 个即时报价。我有 100 个资产,我想每个月存储其即时报价,并且基本上每 30 天左右划分一次表格,这样我就不必为这种划分构建复杂的逻辑。有关如何使用时间刻度数据库完成此操作的任何建议。

目前,我的做法是

  • 获取传入的即时报价(前时间戳1535090420(
  • 将其时间戳舍入到最接近的 30 天周期(1535090420/(86400 * 30(( = 592.241674383
  • 将此数字四舍五入为592并乘以间隔得到1534464000这是最接近的 30 天存储桶,所有即时报价都应存储在其中 所以我创建了一个名为OHLC_1534464000如果不存在的表并在那里添加刻度
  • 有没有更好的方法来做到这一点

除非我错过了什么,否则听起来您只需要一个按 30 天间隔分区的表,该表将根据时间戳自动知道将传入数据放入哪个表。这正是TimescaleDB的超级表的功能。

您可以使用以下语法创建表:

SELECT create_hypertable('ohlc', 'timestamp', chunk_time_interval => interval '30 days');

这将创建 30 天的块(只是后台的 Postgres 表(,并根据其时间戳透明地将每个刻度放置在适当的块中。一旦超过当前 30 天周期的即时报价进入,它将自动创建一个新块。您可以在主表(ohlc(上插入和查询,就好像它是单个Postgres表一样。

相关内容

最新更新