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

How do i divide my minute data into tables containing each month in Timescaledb (PostgreSQL extension)

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

目前我的做法是

除非我遗漏了什么,否则听起来您只是想要一个按 30 天间隔划分的 table,它将根据时间戳自动知道将传入数据放入哪个 table。这正是 TimescaleDB 的功能 hypertables

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

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

这将创建 30 天的块(只是 Postgres tables 在引擎盖下)并透明地将每个刻度根据其时间戳放置在适当的块中。一旦经过当前 30 天周期的报价出现,它将自动创建一个新块。您可以在主 table (ohlc) 上插入和查询,就好像它是一个 Postgres table.